Visual Studio code has gained a lot of popularity recently as an IDE. You can work on almost any language / script using Visual Studio code. It has nice plugins to support syntax highlighting and intellisense.
In this article, let’s have a look at how visual studio code can be used with WSL. For the demo, we will try to setup Visual Studio Code for Python development. But you can use similar steps to setup any framework and continue your development on Linux using WSL and Visual Studio Code.
There are only two prerequisites mentioned below.
- Install Visual Studio Code on windows side
- Install Windows Terminal on windows side
- Install WSL
Even if you do not have installed these prerequisites, it should not take very long to install them now.
Let’s start !
So, I assume we have all the ingredients required for this demo.
Now, start the WSL prompt by running
WSL command (and optionally providing the Linux distribution name in the command line).
Then, navigate to any path on the Linux file system – which you want to open in Visual Studio code. Optionally you can also stay to the same path or you can navigate to Windows path mounted in Linux e.g.
Next, run the command
Code . in the Linux terminal.
If you have executed
Code . for the first time, then this command may fetch some components from the web which are required to run VS code in WSL. This might take few seconds.
As you can see in above snapshot, it installs the VS Code Server component on WSL. So, the whole VS Code is divided into two parts – client and server. WSL will use client installed on windows and server from the Linux to facilitate the development on Linux.
Once this is done, an instance of Visual Studio code will open. This is the VS Code which you have installed on Windows. But if you look at the status bar (bottom left corner), it would say
WSL - ubuntu.
Not only this, but if you try to open any folder / file in this VS code instance, it would open a dialog from where you can select folders / files from the Linux file system as shown in below snapshot.
If you have more questions about this client-server architecture in Visual Studio, you can refer this documentation page.
If you have
Ubuntu-18.04 LTS installed in WSL, then it has the
Python 3.8 already installed. So, ensure that python is installed by using
python3 --version command.
You can also run below script to update the
python version and then install
pip package manager and
venv environments manager.
Create Virtual Environment
Now, create a
HelloWorld folder, in which the new app will be created.
Then in the terminal, navigate to the newly created
HelloWorld folder and then run below commands to create and activate the virtual environment with name
Visual Studio Code Extension
Open the Visual Studio code as explained above (i.e. by running
Code . on the Linux terminal).
Then once the VS Code is open, go to the
VS Code left navigation, and search for
Python, an extension (
ms-python.python) by Microsoft. You should see the extension as shown below. Click on install (green button) to install it.
After installation is done, you will need to reload (blue button in place of install button) the VS Code.
Next, you can open the terminal inside it by using
Terminal option and navigate to
If you already have executed the activate command on terminal, then the VS Code terminal would also show the
.venv environment active in its terminal.
Next, you can run
touch python.py command to create new file under
HelloWorld folder. The file should be visible in the VS Code now.
Add the print statement as shown in below snippet.
Next, right click on file and select
Run Python File in Terminal option to run the python file. This would run the python file and show the output in the terminal.
So, we have successfully ran the Python script on the Linux distro installed on WSL. I hope you find this demo useful. Let me know your thoughts.
This Post Has 3 Comments
The Python Extension is not installing in the WSL env. I need serious help!
Not sure what is the exact issue. But probably, you can try restarting the WSL env (using wsl –shutdown) .
How about simply installing virtualenv similar to this: https://webmatrices.com/d/363/2