258

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?

3
  • 4
    This is the most basic but most thorough tutorial: code.visualstudio.com/docs/python/… Commented Jan 27, 2021 at 16:00
  • 1
    The issue is you're using a Microsoft product. I opened git-bash and typed "python -m venv venv" then "source venv/scripts/activate". Why is it so difficult to achieve in VSCode... Commented Jul 27, 2023 at 12:35
  • This is the GUI method: stackoverflow.com/a/77102141/14838954 Commented Sep 14, 2023 at 15:02

30 Answers 30

256
  • 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_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.pythonPath instead of python.defaultInterpreterPath for older versions.

Sign up to request clarification or add additional context in comments.

17 Comments

My venv file has Include, Lib and Scripts folders. I updated settings.json, but no luck "python.pythonPath": "PrintPython\\venv\\Scripts\\python". PrintPython is my project file inside Python workspace. venv folder is in PrintPython.
@HrvojeT; You have to follow these steps in VSCode.
Ok I fugured it out. In one workspace folder named Python I added all my other projects. So I would have to have only one venv for workspace folder Python. I removed folder Python from workspace and added each subfolder in Python folder as a workspace project like Project1, Project2 etc. In that Project folder I created venv environment and edited settings.json for workspace with this "python.venvPath": "venv" . Now, for every new project I will create new workspace and inside that folder goes venv folder which will be automatically recognized.
Yea, you shouldn't have to go to this much trouble to get VS Code to recognize your virtual environment. The folder is right there in the directory you opened VS Code in. The VS Code team should address this if they truly want to support Python. It can't possibly be that hard.
If you're using JSON settings, then check the settings.json file in your workspace. My vscode added pythonPath automatically, so when changing it globally it didn't do anything.
|
208

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 - Jupyter notebooks in Visual Studio Code does not use the active virtual environment

11 Comments

is the "." in front the "venv" require for vsc to automatically recognize the virtual environment folder? I always name mine "venv" ( no leading dot ). Thx.
not sure if '.' is needed for it to be picked up by VSCode p.s. as per python docs a common name for the target directory is .venv docs.python.org/3/library/…
Yep, same problem here. I do what the instructions say, the popup never shows.
@Timo you must run that in system's terminal, not VSCode Terminal. Just open VSC Terminal and type/select "Python: Create Terminal" to create a terminal tab inside VSC, then you can create the virtual env OR you can just open a terminal in projects path and ready to create
What if my virtual env already exists?
|
72

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/

3 Comments

This is the best answer! Changing the interpreter alone to point to the python symlink in the venv picks up the right interpreter, but it could not find the packages installed in the venv. With this solution vs code can find the packages too.
only working solution
you saved my day! and I created a Youtube video to make it easier for ppl to follow: youtu.be/DB5-JiYWMNs
19

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

5 Comments

What do you mean with "restart" the terminal? I think when do a source .bashrc or exec bash which is like a restart then you loose the virtual environment and you have the same result as putting deactivate. So you need to change your answer.
@Timo in vscode, after activating virtual environment, if you open new terminal, it will open with the virtual environment you created. Anyways, I am removing that statement, it is misleading, sorry for that
Restarting VSCode worked!
'source' is not recognized as an internal or external command, operable program or batch file.
@Zbyszek , source works on linux based terminal, for windows, please refer below to activate the virtual environment: stackoverflow.com/questions/8921188/…
14

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:

  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

Comments

12

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.

1 Comment

Using Codium, I still had to change to the venv by clicking the bottom left interpreter status and choose my new venv.
8

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.

2 Comments

For VSCode it is important that a python interpreter is specified, as stated here: code.visualstudio.com/docs/python/…
@Nicow Thanks for the official link which supports the answer here (just to make this clear). To select a specific environment, use the Python: Select Interpreter command from the Command Palette (Ctrl+Shift+P). And: The Status Bar always shows the current interpreter. ... The Status Bar also reflects when no interpreter is selected. ... In either case, clicking this area of the Status Bar is a convenient shortcut for the Python: Select Interpreter command. Thus, the status bar is the official shortcut to activate the venv.
7

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"
    }

1 Comment

This is helpful, ${workspaceFolder} -- literally what I want. Don't think absolute path make sense if you are doing workspace setting for virtual environment, which only applies to the project.
7

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

3 Comments

There isn't any current user here by the name "Sam". What answer is referred to?
well, I now I can't see as well that, I am quite sure at the time I answered there was either an answer with that name profile. As long I know(and I myself did) username in SO can be changed
@CarmineTambascia that is why one should better link to the user url.
5

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

1 Comment

This extension is archived now and no longer supported
5

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

1 Comment

I had to manually select the venv path to bin/python from the file system menu in vscode after step three because there was no entry for the venv path.
5
  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.

Comments

5

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 file will be located in the .vscode/ folder in your environment: .vscode/task.json. 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
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "linux": {
                "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": {
                "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"
                        ]
                    },
                },
                "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

3 Comments

Great answer. Also similar, more focused question asked here that this is an answer for - stackoverflow.com/questions/75188523/…. I was gonna flag that as a duplicate but I feel it could be more appropriate as its own question.
Thanks for the heads-up. I've created a post in case those searching miss the comments while stumbling across the question.
This doesn't sound very sane. It seem that it recreates the entire virtual environment, based on what is needed. I think what we need to see is how to use the virtual environments we already have.
3

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

Comments

3
  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.

Comments

3

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

Comments

2

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.

Comments

2

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:\Users\name\env\Scripts)
  5. Select the python.exe file
  6. Restart the VScode and if you see the available kernlas you can find your pyhton env there

Comments

2

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

Comments

2

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.

Comments

1

Activate your environment.

You could also try this:

Using Python environments in Visual Studio Code

1 Comment

When I run activate in cmd terminal in VS Code it is activated. However I need to change the interpreter in VS Code gui so my imports are recognized.
1

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.

1 Comment

What did PowerShell version 3 add/change that fixed the original problem?
1

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

Comments

1

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.

Comments

1

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

Comments

1

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.

Comments

1

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.

1 Comment

0

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.

Comments

0

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

Comments

0

If you have multiple version of python, you will need to explicitly specify python3 and use virtualenv instead of venv:

python3 -m virtualenv venvname

if you are running in a FS mounted directory. you may need to specify --copies because symbolic links may not work.

python3 -m virtualenv --copies venvname

1 Comment

To activate the the env: source <env-name>/bin/activate

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.