简体   繁体   中英

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

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?

PS:

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

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:

在此处输入图像描述

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; eg: (venv) ...

You can now instal packages as usual, eg, 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, eg, pip install sklearn .

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

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.

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 .

如何在 Visual Studio Code 中设置 virtualenv

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 解释器信息

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

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:

在此处输入图像描述

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

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:

在此处输入图像描述

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

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

有一个名为“Python Auto Venv”的 Visual Studio Code 扩展,它会自动检测并使用您的虚拟环境(如果有的话)。

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

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

  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.

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

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

Activate your environment.

You could also try this:

Using Python environments in Visual Studio Code

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.

在 Visual Studio Code 中,选择一个文件夹,创建一个工作区,它将正常工作。

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.

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.

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

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.

I got the same problem. VS code suddenly stopped detecting my virtual environment that happened due to a folder name "python" inside a subdirectory "great_expectation". eg: 在此处输入图像描述

What I've done is delete the directory name as python and reopen the project from the root venv directory then the problem got resolved.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM