DEV Community

Harman Preet Singh
Harman Preet Singh

Posted on • Edited on

Using Polars/Tensorflow with NVIDIA GPU (CUDA), on Windows using WSL2

First and foremost, let me know if I missed something, or got something wrong, or if you have questions

Steps

WSL2

  1. Install any Linux distribution through the Window Store (by searching Ubuntu, or Debian for example)
  2. In Windows Search type Control Panel and then go to Programs > Turn Windows features on or off, and make sure the checkbox next to Windows Subsystem for Linux is TURNED ON
  3. Boot it up, and create a user
  4. Set WSL version 2 as the default by running this command in Command Prompt or Powershell (on your Windows device)
wsl --set-default-version 2
Enter fullscreen mode Exit fullscreen mode

Creating a virtual environment inside WSL2

1. Install Python on the WSL2 instance by running these commands

sudo apt update
sudo apt install python3 python3-pip python3-venv
Enter fullscreen mode Exit fullscreen mode

2. Create new virtual environment

python3 -m venv <your-environment-name>

# examples
python3 -m venv myenv
# or
python3 -m venv gpu-env
Enter fullscreen mode Exit fullscreen mode

You can make this virtual environment in the root folder. After this you can simply create new folders in the root folder, and those will all use that virtual environment. This way you do not need to create a new virtual environment every time. (The installation time is very long, and you probably do not want to do that every time)

3. Activate the virtual environment

source <your-environment-name>/bin/activate

# examples
source myenv/bin/activate
# or
source gpu-env/bin/activate
Enter fullscreen mode Exit fullscreen mode

If you successfully activated the virtual environment, you should see (<your-environment-name>) on the left side of the terminal, before every line

You can then deactivate it by typing deactivate, but for now keep it activated for the tutorial

Installing pip packages in virtual environment

pip install polars[gpu] pandas numpy tensorflow[and-cuda]
Enter fullscreen mode Exit fullscreen mode

NOTE: You need to be inside an activated virtual environment to be able to run pip-install commands. Otherwise, you will get an error telling you to create a virtual environment

Using the virtual environment in VS Code

You can open VS Code by typing code . in the terminal. This will install and open the VS Code installation on the WSL instance. This installation does not have all extensions you have on your Windows installation (e.g. Python, GitHub Copilot, Jupyter). You can (have to) install them again through the Extensions tab in VS Code.

When selecting an interpreter, select <your-environment-name>, instead of Python version with a version number. The interpreter you need has the exact same name as the virtual environment, and will have a Python version number after it, in this format

  • gpu-env (Python 3.11.2) <<< select this one
  • Python 3.11.2 /bin/python3
  • Python 3.11.2 /usr/bin/python3

How to open existing projects, and use the WSL environment

You obviously already have made projects before. Here is how you can open those (projects on your C:/ drive opposed to those stored on WSL) projects and run them using the WSL environment

  1. open a Terminal (Powershell or Command Promp), and navigate to where you have the project saved
  2. type wsl
  3. activate your environment by typing source ~/gpu-env/bin/activate
  4. open VS Code by typing code . in the terminal
  5. in the root of your project create a .vscode folder, with inside it a settings.json file
  6. and put this inside the json file (replace <your-environment-name> with your environment name)
{
"python.defaultInterpreterPath": "~/<your-environment-name>/bin/python"
}
Enter fullscreen mode Exit fullscreen mode

example using gpu-env

{
"python.defaultInterpreterPath": "~/gpu-env/bin/python"
}
Enter fullscreen mode Exit fullscreen mode
  1. and then select your environment in the Python Interpreter selection screen (top-right in a Jupyter Notebook file, or bottom right in VS Code itself if you are running .py files)

Now you can open any existing project you had on your Windows device, and you will use the WSL2 environment. This also comes with the benefit that if you had GIT configured on your Windows system, it will use those configs (if you are in the WSL root [meaning not in C drive] you need to configure GIT yourself again by creating RSA keys on GitHub). This VS Code does have all the same extensions (because it is the same VS Code)

If you ever make a new directory for a new project, make sure to

  • type wsl in a terminal
  • activate your environment by typing source ~/gpu-env/bin/activate
  • open VS Code through that terminal by typing code .
  • add the .vscode folder in the root of your project, with the settings.json file in it (with the right contents)
  • select the right Python interpreter

Addendum: Context menu element

I just found out you could do this, but you can add an item to the right-click menu, so that you can automatically open a folder in the activated WSL environment. This means you don't need to run all of those commands every time

This is what it looks like:

Image description

The scripts are made by someone else, and they posted a tutorial here:
https://dev.to/lucasvtiradentes/how-to-add-open-with-wsl-vs-code-to-windows-context-menu-3f8b

They use a different title "Open in WSL VS Code" instead, I changed that in the .batfile on line 8, so that it matches with the default VS Code context menu title

Top comments (1)