Harman Preet Singh
Posted on September 18, 2024
First and foremost, let me know if I missed something, or got something wrong, or if you have questions
Steps
WSL2
- Install any Linux distribution through the Window Store (by searching Ubuntu, or Debian for example)
- In Windows Search type
Control Panel
and then go to Programs > Turn Windows features on or off, and make sure the checkbox next toWindows Subsystem for Linux
is TURNED ON - Boot it up, and create a user
- 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
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
2. Create new virtual environment
python3 -m venv <your-environment-name>
# examples
python3 -m venv myenv
# or
python3 -m venv gpu-env
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
If you successfully activated the virtual environment, you should see
(<your-environment-name>)
on the left side of the terminal, before every lineYou 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]
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
- open a Terminal (Powershell or Command Promp), and navigate to where you have the project saved
- type
wsl
- activate your environment by typing
source ~/gpu-env/bin/activate
- open VS Code by typing
code .
in the terminal - in the root of your project create a
.vscode
folder, with inside it asettings.json
file - and put this inside the json file (replace
<your-environment-name>
with your environment name)
{
"python.defaultInterpreterPath": "~/<your-environment-name>/bin/python"
}
example using gpu-env
{
"python.defaultInterpreterPath": "~/gpu-env/bin/python"
}
- 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 thesettings.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:
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 .bat
file on line 8, so that it matches with the default VS Code context menu title
Posted on September 18, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.