How can I set up a virtual environment for Python in Visual Studio Code?

PythonVisual Studio-CodeVirtualenv

Python Problem Overview


In my project folder I created a venv folder:

python -m venv venv

When I run command select python interpreter in Visual Studio Code, my venv folder is not shown. I went one level up like suggested here, but Visual Studio Code doesn't see my virtual interpreter.

What did I miss?

Python Solutions


Solution 1 - Python

P.S.:

  • I have been using Visual Studio Code for a while now and found an another way to show virtual environments in Visual Studio Code.

  • Go to the parent folder in which venv is there through a command prompt.

  • Type code . and Enter. [It is working on both Windows and Linux for me.]

  • That should also show the virtual environments present in that folder.

Original Answer

I almost run into same problem every time I am working on Visual Studio Code using venv. I follow the below steps:

  1. Go to menu FilePreferencesSettings.

  2. Click on Workspace settings.

  3. Under Files:Association, in the JSON: Schemas section, you will find Edit in settings.json. Click on that.

  4. Update "python.pythonPath": "Your_venv_path/bin/python" under workspace settings. (For Windows): Update "python.pythonPath": "Your_venv_path/Scripts/python.exe" under workspace settings.

  5. Restart Visual Studio Code in case if it still doesn't show your venv.

Note: Use python.defaultInterpreterPath instead of python.pythonPath for newer versions.

Solution 2 - Python

With a newer Visual Studio Code version it's quite simple.

Open Visual Studio Code in your project's folder.

Then open Python Terminal (Ctrl + Shift + P: Python: Create Terminal)

In the terminal:

python -m venv venv

You'll then see the following dialog:

Enter image description here

Click Yes; and your venv is ready to go.

Open a new terminal within VSCode Ctrl + Shift + P and you'll see that venv is getting picked up; e.g.: (venv) ...

You can now instal packages as usual, e.g., pip install sklearn

To keep track of what is installed: pip freeze > requirements.txt


For the older versions of VSCode you may also need to do the following:

Then Python: Select Interpreter (via Ctrl + Shift + P)

And select the option (in my case towards the bottom)

Python 3.7 (venv) ./venv/Scripts/python.exe

If you see

> Activate.ps1 is not digitally signed. You cannot run this script on the current system.

you'll need to do the following: https://stackoverflow.com/a/18713789/2705777

For more information see: Global, virtual, and conda environments

Installing Modules

Ctrl + Shift + P and Terminal: Create New Integrated Terminal

from the terminal

Windows: .\.venv\Scripts\activate

Linux: .\.venv\bin\activate

You can now instal packages as usual, e.g., pip install sklearn.

For Jupyter, you need to do more - https://stackoverflow.com/questions/58119823/jupyter-notebooks-in-vscode-does-not-use-active-virtual-environment

Solution 3 - Python

I was having the same issue until I worked out that I was trying to make my project directory and the virtual environment one and the same - which isn't correct.

I have a \Code\Python directory where I store all my Python projects. My Python 3 installation is on my Path.

If I want to create a new Python project (Project1) with its own virtual environment, then I do this:

python -m venv Code\Python\Project1\venv

Then, simply opening the folder (Project1) in Visual Studio Code ensures that the correct virtual environment is used.

Solution 4 - Python

I fixed the issue without changing the Python path as that did not seem like the right solution for me. The following solution worked for me, and hopefully it works for you as well :))

  1. Open cmd in Windows / shell in Linux/Mac.

  2. Activate your virtualenv (using source activate / activate.bat / activate.ps1 if using PowerShell)

    C:\Users\<myUserName>\Videos\myFolder>django-project\Scripts\activate.bat (django-project) C:\Users\<myUserName>\Videos\myFolder>

  3. Navigate to your project directory and open Visual Studio Code there.

    (django-project) C:\Users\prash\Videos\myFolder\projects>code .

  4. in Visual Studio Code, go to menu FilePreferencesSettings (don’t worry you don’t need to open the JSON file)

  5. In the setting search bar, search for virtual / venv and hit Enter. You should find the below in the search bar:

> Python: Venv Folders Folders in your home directory to look into for > virtual environments (supports pyenv, direnv and virtualenvwrapper by > default).

  1. Add an item, and then enter the path of the scripts of your virtuanenv which has the activate file in it. For example, in my system, it is:

    C:\Users\<myUserName>\Videos\myFolder\django-project\Scripts\

  2. Save it and restart Visual Studio Code.

  3. To restart, open cmd again, navigate to your project path and open Visual Studio Code. (Note that your venv should be activated in cmd before you open Visual Studio Code from cmd)

> Command to open Visual Studio Code from cmd: > > code .

How to setup virtualenv in Visual Studio Code

Solution 5 - Python

This is an addition to Sumit S Chawla's answer that, though it is correct, is missing the fact that anytime you open a folder in Visual Studio Code, it creates a .vscode folder, but those can be multiple, created any time you eventually open a directory.

The .vscode folder has JSON objects that content properties such "setting.json", in which one declare the interpreter to use at that the ".vscode" level (refer to https://stackoverflow.com/questions/44629890 for more clarifications).

{
   {
     "python.pythonPath": "VirtualEnPath/bin/python3.6"
   }
}

So potentially you could open Visual Studio Code at another level in the virtual environment. It creates another .vscode folder that assume as Python directory those of the global machine and so having such an error, and has I experienced has nothing to do if the virtual environment is activated or not.

This is indeed what happened to me. I have indeed a DjangoRESTAPI_GEN folder in which I initially opened the IDE and it did recognize the virtual environment Python path. Then a few days after I opened it at the level where Git is, so it did create another .vscode folder, that picked the global Python Interpreter, causing my lint in the virtual environment not been used.

And the virtual env interpreter did not even show in "select python interpreter". But as written, opening the IDE at the level where the .vscode folder, that has the settings.json file with the correct path, it does.

Once you set the correct path in the setting.json file and select the virtual environment interpreter, then Visual Studio Code will automatically activate the virtual environment in its terminal:

Enter image description here

Solution 6 - Python

For Anaconda users: Just create a venv using Conda, see here. Afterwards, open Visual Studio Code and left-click on the Visual Studio Code interpreter shown in Visual Studio Code at the bottom left:

Visual Studio Code interpreter information

Choose a virtual environment that pops up in a dropdown of the settings window, and you are done.

Solution 7 - Python

Steps to create virtual environment:

  1. go to folder containing project
  2. python3 -m venv evn_name
  3. source evn_name/bin/activate
  4. now you will be able to see (env_name) infront of the each terminal line

Now you can install required libraries in virtual environment

  1. pip3 install -r requirement.txt
  2. if needed restart code editor

to stop working in virtual environment type: deactivate

to remove virtual environment type: rm -rf evn_name

Solution 8 - Python

Many have mentioned the python.pythonPath method.

Another way is adding a envFile in the launch.json like this:

    {
        "name": "Run",
        "etc": "etc",
        "envFile": "${workspaceFolder}/venv"
    }

Solution 9 - Python

There is a Visual Studio Code extension called "Python Auto Venv" that automatically detects and uses your virtual environment if there is one.

Solution 10 - Python

If you already have your virtualenvs, you only need to open VSCode preferences (Ctrl + ,) and search for venv. Then add the path of the virtualenvs to the “Venv Path” settings, like so:

enter image description here

More information can be found here: https://techinscribed.com/python-virtual-environment-in-vscode/

Solution 11 - Python

I had the same problem and the solution was pretty easy:

> "If you create a new conda environment while VS Code is running, use > the Reload Window command to refresh the environment list shown with > Python: Select Interpreter; otherwise you may not see the environment > there. It might take a short time to appear; if you don't see it at > first, wait 15 seconds then try using the command again."

That's written on the Visual Studio Code site.

Note: to reload the window: Ctrl + Shift + P in Visual Studio Code, then write reload window

Solution 12 - Python

Activate your environment.

You could also try this:

Using Python environments in Visual Studio Code

Solution 13 - Python

I had the same problem and it was because PowerShell was not updated. Sometimes Windows preserves version 2.* and I had to manually download and install version 3.

After that, the problem was solved and I could use virtual environments very well.

Solution 14 - Python

For Mac users, note this bug: when you click "Enter interpreter path", you have two options: (1) manually enter the path; (2) select the venv file from Finder.

It only works if I manually enter the path. Selecting with Finder yields some strange path like Library/Developer/CommandTools/... which I understand.

Solution 15 - Python

  1. If your using Visual Studio Code on Mac, it's important to have your venv installed in the same directory as your workspace.

  2. In my case my venv was in a different directory (not in my project workspace), so a simple cut/copy-paste of my venv to the project workspace did the trick.

  3. As soon as your venv is copied to the project workspace, your Visual Studio Code will pick that up and show a notification giving you an option to select venv as an interpreter.

Solution 16 - Python

Let's assume that you have created a virtualenv folder with the name of venv.

You can easily activate it by typing the following command from the directory where venv is installed.

.\venv\Scripts\activate

Solution 17 - Python

Two main things I identified that could lead to being unable to see the venv.

  1. If you are using VS Code version 1.60.0 or closer to that, the path to the venv is given by python.defaultInterpreterPath. The python.pythonPath is no longer valid.

So, the settings.json should be like:

{
        "python.defaultInterpreterPath": 
    "C:\\tproj\\tproj_env\\Scripts\\python"
    }
  1. The venv folder should be in a higher level folder than where the settings.json is in. ex: if the project name is tproj and the venv folder (say tproj_env) and codes folder (say tproj_code) are sub-folders. It is recommended to have the settings.json be in the tproj_code sub-folder.

Solution 18 - Python

VS Code python extension automatically checks for virtual environments in default virtual environment directories: https://code.visualstudio.com/docs/python/environments#_where-the-extension-looks-for-environments

If your virtual environment is present in any of these default directories, you just need to activate the environment by selecting it. To select a specific environment, use the 'Python: Select Interpreter' command from the Command Palette (Ctrl+Shift+P). Refer: https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment

Solution 19 - Python

You have to select python that is in the virtual environment

  1. create new venv (virtualenv -p python3 venv)
  2. open directory (with venv) in Vs Code
  3. CMD + Shift + P: Python: Select Interpreter from venv

github

Solution 20 - Python

In Visual Studio Code, select a folder, create a workspace and it will work fine.

Solution 21 - Python

Start PowerShell with admin privileges, run the following command:

 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Remotesigned

Confirm and go! Execution Policy changes have been updated. You can go back to VsCode and activate your virtual env.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHrvoje TView Question on Stackoverflow
Solution 1 - PythonSumit S ChawlaView Answer on Stackoverflow
Solution 2 - PythonNeilView Answer on Stackoverflow
Solution 3 - PythonThe Welsh DragonView Answer on Stackoverflow
Solution 4 - PythonPrashanth PradeepView Answer on Stackoverflow
Solution 5 - PythonCarmine TambasciaView Answer on Stackoverflow
Solution 6 - Pythonquestionto42standswithUkraineView Answer on Stackoverflow
Solution 7 - PythonratneshView Answer on Stackoverflow
Solution 8 - PythonAlex TelonView Answer on Stackoverflow
Solution 9 - PythonMark KortinkView Answer on Stackoverflow
Solution 10 - PythonI_Al-thamaryView Answer on Stackoverflow
Solution 11 - PythonRami MaView Answer on Stackoverflow
Solution 12 - PythonDaedalusView Answer on Stackoverflow
Solution 13 - PythonjulianvareView Answer on Stackoverflow
Solution 14 - PythonyyFredView Answer on Stackoverflow
Solution 15 - PythonArvind ReddyView Answer on Stackoverflow
Solution 16 - PythonPraveen KumarView Answer on Stackoverflow
Solution 17 - PythonLokuView Answer on Stackoverflow
Solution 18 - PythonAbhishek PoojaryView Answer on Stackoverflow
Solution 19 - PythonmehdiView Answer on Stackoverflow
Solution 20 - PythonzzfimaView Answer on Stackoverflow
Solution 21 - PythonFabiano RochaView Answer on Stackoverflow