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

Question:

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?

Asked By: Hrvoje T

||

Answers:

Activate your environment.

You could also try this:

Using Python environments in Visual Studio Code

Answered By: Daedalus

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.defaultInterpreterPath": "Your_venv_path/bin/python" under workspace settings.
    (For Windows): Update "python.defaultInterpreterPath": "Your_venv_pathScriptspython.exe" under workspace settings.

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

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

Answered By: Sumit S Chawla

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.

Answered By: julianvare

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 CodePython 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 CodePythonProject1venv

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

Answered By: The Welsh Dragon

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 What is a 'workspace' in Visual Studio Code? 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

Answered By: Carmine Tambascia

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"
    }
Answered By: Alex Telon

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>VideosmyFolder>django-projectScriptsactivate.bat (django-project) C:Users<myUserName>VideosmyFolder>

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

    (django-project) C:UsersprashVideosmyFolderprojects>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>VideosmyFolderdjango-projectScripts

  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

Answered By: Prashanth Pradeep

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

Answered By: Rami Ma

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

Answered By: Mark Kortink

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: ..venvScriptsactivate

Linux: ./.venv/bin/activate

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

For Jupyter, you need to do more – Jupyter notebooks in Visual Studio Code does not use the active virtual environment

Answered By: Neil

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

Answered By: zzfima

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.

Answered By: questionto42

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.

Answered By: yyFred
  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.

Answered By: Arvind Reddy

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

Answered By: ratnesh

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.

.venvScriptsactivate
Answered By: Praveen Kumar

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/

Answered By: I_Al-thamary

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.
Answered By: Loku

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

Answered By: Abhishek Poojary

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.

Answered By: Fabiano Rocha

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

Answered By: mehdi

There is a very simple procedure for the new versions of vscode

  1. Open a command pallatte (ctrl+shift+p)
  2. Select "+Enter interpreter path"
  3. Select "Find.." and it will open the file explorer
  4. Go to your eviroiment folder’s script folder (ex:C:UsersnameenvScripts)
  5. Select the python.exe file
  6. Restart the VScode and if you see the available kernlas you can find your pyhton env there
Answered By: Jb-99

With Visual Studio Code, a task within task.json can be configured to build a python environment with python modules listed in the requirements.txt and upgrade pip within that virtual environment. To create the task, goto Terminal -> Configure Tasks. If there is no task.json existing in your environment, create task.json file from template -> then click other and copy and paste the json below. This task is agnostic to Operating Systems such as Windows, Linux, and MacOS. With Windows’ ecosystem of command-line applications, cmd.exe is used in conjunction with the flags /c and /d to ensure that the environment created by the task is correct. As mentioned by Neil in his post, you can either select
Yes after the dialog prompt or select the python interpreter via the command palette.

{

    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build Python Env",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "linux": {
                "options": {
                    "cwd": "${workspaceFolder}"
                },
                "command": "python3 -m venv py_venv && source py_venv/bin/activate && python3 -m pip install --upgrade pip && python3 -m pip install -r requirements.txt && deactivate py_venv"
            },
            "osx": {
                "options": {
                    "cwd": "${workspaceFolder}"
                },
                "command": "python3 -m venv py_venv && source py_venv/bin/activate && python3 -m pip install --upgrade pip && python3 -m pip install -r requirements.txt && deactivate py_venv"
            },
            "windows": {
                "options": {
                    "shell": {
                        "executable": "C:\Windows\system32\cmd.exe",
                        "args": [
                            "/d",
                            "/c"
                        ]
                    },
                    "cwd": "${workspaceFolder}"
                },
                "command": "(if not exist py_venv py -m venv py_venv) && .\py_venv\Scripts\activate.bat && py -m pip install --upgrade pip && py -m pip install -r requirements.txt && deactivate py_venv"
            },
            "problemMatcher": []
        }
    ]
}

The task labeled Build Python Env is demonstrated to install a Python environment with numpy and pandas indicated as dependencies in requirements.txt example below:
enter image description here

If more python packages are added to the requirements.txt, then re-running the task will install the new additional dependencies to the python virtual environment

Answered By: kyrlon

By setting EVERYTHING up in Visual Studio Code, your virtual environment will not have the configuration that you want.

First use GitBash and type these commands to create your virtual environment. This assumes you are in the correct folder where Python was installed.

python3 -m venv --system-site-packages /c/python/python39/python39_venv
cd /c/python/python39/python39_venv
source /c/python/python39/python39_venv/source/bin/activate
pip install {module of choice}=={version of choice}

If you are in a different folder, then type the full path of python.exe instead of the command python3.

/c/Python/Python39/Scripts/python.exe -m venv --system-site-packages /c/python/python39/python39_venv

Now configure this new virtual environment in Visual Studio Code:

View > Command Palette > type: "Python: Select Interpreter" > type "C:/Python/Python39/python39_venv/Scripts/python.exe"

Depending on the version of Python, the subfolders to python.exe might vary a bit. So manually navigate to the path to confirm the path.

Answered By: JustBeingHelpful

Activate your virtual environment:

  1. Open the command prompt (Windows) or terminal (MacOS).
  2. Activate the virtual environment:
  • replace venv with your virtual environment name
  • assumes you use Anaconda or Miniconda as your package manager
conda activate venv

Open the project folder in Visual Studio (VS) Code:

  1. Launch VS Code.
  2. Click on "File" in the menu bar.
  3. Select "Open Folder" or "Open Workspace" (if you have a workspace file).
  4. Navigate to the folder that contains your project files and click "Open."

Configure the Python interpreter in VS Code:

  1. Once your project is open in VS Code, press Ctrl+Shift+P (Windows) or Cmd+Shift+P (MacOS) to open the Command Palette.
  2. Type "Python: Select Interpreter" and select it from the options.
  3. A list of available Python interpreters will appear. Choose the one associated with your virtual environment (it might be labeled with the environment name and path).

If your virtual environment is not listed, select "Enter interpreter path…" and provide the path to the Python executable within your virtual environment.

Answered By: Wilson Sauthoff

To Activate your virtual environment,
Step 1: Open VSCode
Step 2: ener ctrl + shift + p
step 3: Enter python: Select Interpreter
you should be able to see the virtual environment if in the same folder.

enter image description here

Answered By: Srivasan Sridharan
  1. Create a virtual environment:

    python3 -m venv my_env_name

  2. Activate the virtual environment

    source bin/activate

    Type :python -c "import sys; print(sys.executable)"

    you will get something like :
    for linux : /home/user/dev/env/frame/bin/python

    copy this.

  3. Open VS Code

  4. Press Ctrl+Shift+P

  5. Search for Python Select Interpreter

  6. Paste the file directory

Open a new terminal, you will see your virtual environment.

Answered By: Kaizen

You can easily create a Python virtual environment in Visual Studio Code (VSCode) by following these steps:

  1. Open the terminal in VSCode. You can do this by navigating to the menu and selecting View -> Command Palette, or by using the keyboard shortcut Ctrl+Shift+p.
    enter image description here

  2. In the command palette, type Python: Create Environment.
    enter image description here

  3. Choose between conda or venv. In this example, we’ll use venv.
    enter image description here

  4. Select your desired Python version from the list of installed Python versions on your machine.
    enter image description here

  5. If you have a requirements.txt file that you want to use to install packages, you can specify it here. The virtual environment will be created based on the packages listed in this file. If not, you can leave this option blank.
    enter image description here

  6. Click "OK" to create your virtual environment.
    enter image description here

Your Python virtual environment will now be created, and it will be located in a directory named .venv within your project folder.

This method allows you to easily manage your Python environments within VSCode and select the Python version and package dependencies that suit your project’s requirements.

Answered By: Nirmal Sankalana

For me I think the problem was that the name of my virtual environment wasn’t preceded by a . and Visual Studio Code wasn’t recognising it as a Virtual Environment. (Running on MAC).

When creating one on the terminal with, for example:

python3.12 -m venv .hello

and opening the folder that contains .hello, the Visual Studio Code will suggest .hello as an Interpreter when pressing Cmd + Shift + P and selecting Python: Select Interpreter.

To see if it works, you can press the run button and open the terminal on VSCode. The path shown should be something like:

/Users/youruser/Desktop/FolderWithVenv/.hello/bin/python

Answered By: Laura Corssac