如何在 Visual Studio Code 中为 Python 设置虚拟环境?

Posted

技术标签:

【中文标题】如何在 Visual Studio Code 中为 Python 设置虚拟环境?【英文标题】:How can I set up a virtual environment for Python in Visual Studio Code? 【发布时间】:2019-06-03 23:42:50 【问题描述】:

在我的项目文件夹中,我创建了一个 venv 文件夹:

python -m venv venv

当我在 Visual Studio Code 中运行命令 select python interpreter 时,我的 venv 文件夹未显示。我按照here 的建议升级了一级,但 Visual Studio Code 看不到我的虚拟解释器。

我错过了什么?

【问题讨论】:

这是最基本但最彻底的教程:code.visualstudio.com/docs/python/… 【参考方案1】:

你必须选择虚拟环境中的python

    创建新的 venv (virtualenv -p python3 venv) 在 Vs Code 中打开目录(使用 venv) CMD + Shift + P:Python:从 venv 中选择解释器

github

【讨论】:

【参考方案2】:

附:

我使用 Visual Studio Code 已经有一段时间了,并找到了另一种在 Visual Studio Code 中显示虚拟环境的方法。

通过命令提示符转到 venv 所在的父文件夹。

键入code .输入。 [对我来说,它适用于 Windows 和 Linux。]

这也应该显示该文件夹中存在的虚拟环境。

原答案

每次我使用 venv 处理 Visual Studio Code 时,我几乎都会遇到同样的问题。我遵循以下步骤:

    转到菜单文件首选项设置

    点击工作区设置

    Files:Association 下的 JSON: Schemas 部分中,您将找到 Edit in settings.json。点击那个。

    在工作区设置下更新"python.pythonPath": "Your_venv_path/bin/python"。 (对于 Windows):在工作区设置下更新 "python.pythonPath": "Your_venv_path/Scripts/python.exe"

    重新启动 Visual Studio Code,以防它仍然不显示您的 venv

注意:对于较新的版本,请使用 python.defaultInterpreterPath 而不是 python.pythonPath

【讨论】:

我的 venv 文件有 Include, Lib and Scripts 文件夹。我更新了settings.json,但没有运气"python.pythonPath": "PrintPython\\venv\\Scripts\\python"PrintPython 是我在 Python 工作区中的项目文件。 venv 文件夹在 PrintPython 中。 @HrvojeT;您必须在 VSCode 中执行这些步骤。 好吧,我猜到了。在一个名为Python 的工作区文件夹中,我添加了所有其他项目。所以我只需要一个用于工作区文件夹Python 的 venv。我从工作区中删除了文件夹 Python,并将 Python 文件夹中的每个子文件夹添加为工作区项目,如 Project1Project2 等。在该 Project 文件夹中,我创建了 venv 环境并使用此编辑了 settings.json 的工作区"python.venvPath": "venv" 。现在,对于每个新项目,我将创建新的工作区,并在该文件夹中进入 venv 文件夹,该文件夹将被自动识别。 是的,你不应该为了让 VS Code 识别你的虚拟环境而费尽心思。该文件夹就在您打开 VS Code 的目录中。如果 VS Code 团队真的想要支持 Python,他们应该解决这个问题。不可能那么难。 如果您使用 JSON 设置,请检查工作区中的 settings.json 文件。我的 vscode 自动添加了pythonPath,所以在全局更改它时它没有做任何事情。【参考方案3】:

创建虚拟环境的步骤:

    转到包含项目的文件夹 python3 -m venv evn_name source evn_name/bin/activate 现在您将能够看到 (env_name) 在每个终端行的前面

现在您可以在虚拟环境中安装所需的库

    pip3 install -r requirement.txt 如果需要重新启动代码编辑器

停止在虚拟环境中工作类型:deactivate

删除虚拟环境类型:rm -rf evn_name

【讨论】:

“重启”终端是什么意思?我认为什么时候执行source .bashrcexec bash 就像重新启动一样,然后您会失去虚拟环境,并且您会得到与放置deactivate 相同的结果。所以你需要改变你的答案。 @Timo 在 vscode 中,激活虚拟环境后,如果你打开新终端,它会打开你创建的虚拟环境。无论如何,我要删除该声明,它具有误导性,对此感到抱歉【参考方案4】:

以管理员权限启动 PowerShell,运行以下命令:

 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Remotesigned

确认并出发!执行策略更改已更新。您可以返回 VsCode 并激活您的虚拟环境。

【讨论】:

【参考方案5】:

VS Code python 扩展自动检查默认虚拟环境目录中的虚拟环境:https://code.visualstudio.com/docs/python/environments#_where-the-extension-looks-for-environments

如果您的虚拟环境存在于这些默认目录中,您只需通过选择它来激活该环境。要选择特定环境,请使用命令面板中的“Python:选择解释器”命令 (Ctrl+Shift+P)。 参考:https://code.visualstudio.com/docs/python/environments#_select-and-activate-an-environment

【讨论】:

【参考方案6】:

我发现可能导致无法看到 venv 的两个主要因素。

    如果您使用 VS Code 版本 1.60.0 或更接近的版本,则 venv 的路径由 python.defaultInterpreterPath 给出。 python.pythonPath 不再有效。

所以,settings.json 应该是这样的:


        "python.defaultInterpreterPath": 
    "C:\\tproj\\tproj_env\\Scripts\\python"
    
    venv 文件夹应位于比settings.json 所在位置更高级别的文件夹中。 例如:如果项目名称是 tproj 并且 venv 文件夹(比如 tproj_env)和代码文件夹(比如 tproj_code)是子文件夹。建议将settings.json 放在 tproj_code 子文件夹中。

【讨论】:

【参考方案7】:

如果你已经有了virtualenvs,只需要打开VSCode偏好设置(Ctrl + ,),搜索venv即可。然后将virtualenvs的路径添加到“Venv Path”设置中,像这样:

更多信息可以在这里找到: https://techinscribed.com/python-virtual-environment-in-vscode/

【讨论】:

【参考方案8】:

假设您已经创建了一个名为 venv 的 virtualenv 文件夹。

您可以通过在安装 venv 的目录中键入以下命令轻松激活它。

.\venv\Scripts\activate

【讨论】:

【参考方案9】:

对于 Anaconda 用户:只需使用 Conda 创建一个 venv,请参阅 here。之后,打开 Visual Studio Code 并左键单击左下角 Visual Studio Code 中显示的 Visual Studio Code 解释器:

在设置窗口的下拉菜单中选择一个弹出的虚拟环境,就完成了。

【讨论】:

对于 VSCode,指定 python 解释器很重要,如下所述:code.visualstudio.com/docs/python/… @Nicow 感谢此处支持答案的官方链接(只是为了说明这一点)。 To select a specific environment, use the Python: Select Interpreter command from the Command Palette (Ctrl+Shift+P). 和: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. 因此,状态栏是激活 venv 的官方快捷方式。【参考方案10】:

使用较新的 Visual Studio Code 版本非常简单。

在项目文件夹中打开 Visual Studio Code。

然后打开Python终端Ctrl + Shift + P:Python:创建终端)

在终端中:

python -m venv venv

然后您将看到以下对话框:

点击;并且您的 venv 已准备就绪。

在 VSCode Ctrl + Shift + P 中打开一个新终端,您会看到 venv 正在被拾取;例如:(venv) ...

您现在可以像往常一样安装包,例如,pip install sklearn

要跟踪安装的内容:pip freeze > requirements.txt


对于旧版本的 VSCode,您可能还需要执行以下操作:

然后Python: Select Interpreter(通过Ctrl + Shift + P

然后选择选项(在我的例子中是在底部)

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

如果你看到

Activate.ps1 未进行数字签名。您无法在当前系统上运行此脚本。

您需要执行以下操作:https://***.com/a/18713789/2705777

更多信息请见:Global, virtual, and conda environments

安装模块

Ctrl + Shift + P终端:创建新的集成终端

从终端

Windows:.\.venv\Scripts\activate

Linux:.\.venv\bin\activate

您现在可以像往常一样安装软件包,例如,pip install sklearn

对于Jupyter,您需要做的更多 - Jupyter notebooks in Visual Studio Code does not use the active virtual environment

【讨论】:

是“。”在前面的“venv”要求 vsc 自动识别虚拟环境文件夹?我总是将我的名字命名为“venv”(没有前导点)。谢谢。 不确定是否为 '.'需要它才能被 VSCode p.s. 拾取。根据python文档a common name for the target directory is .venvdocs.python.org/3/library/… 是的,同样的问题。我按照说明做,弹出窗口从不显示。 我有版本 1.62.3 和 Ubuntu 20.04,在 VSCode 终端中没有看到python -m venv ve 之后的对话框。 @Timo 您必须在系统终端中运行它,而不是在 VSCode 终端中运行。只需打开 VSC 终端并键入/选择“Python:创建终端”以在 VSC 中创建一个终端选项卡,然后您可以创建虚拟环境,或者您可以在项目路径中打开一个终端并准备好创建【参考方案11】:

    如果您在 Mac 上使用 Visual Studio Code,请将 venv 安装在与工作区相同的目录中,这一点很重要。

    在我的情况下,我的 venv 位于不同的目录中(不在我的项目工作区中),因此将我的 venv 简单地剪切/复制粘贴到项目工作区就可以了。

    一旦您的 venv 被复制到项目工作区,您的 Visual Studio Code 就会选择它并显示一条通知,让您可以选择 venv 作为解释器。

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

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

【讨论】:

【参考方案14】:

我遇到了同样的问题,解决方法很简单:

"如果在 VS Code 运行时创建新的 conda 环境,请使用 重新加载窗口命令以刷新显示的环境列表 Python:选择解释器;否则你可能看不到环境 那里。可能需要很短的时间才会出现;如果你没有看到它 首先,等待 15 秒,然后再次尝试使用该命令。”

写在Visual Studio Code site上。

注意:重新加载窗口:Ctrl + Shift + P 在Visual Studio Code中,然后写重新加载窗口

【讨论】:

【参考方案15】:

我在不更改 Python 路径的情况下解决了这个问题,因为这对我来说似乎不是正确的解决方案。以下解决方案对我有用,希望它也对你有用:))

    在 Windows 中打开 cmd / 在 Linux/Mac 中打开 shell。

    激活您的 virtualenv(如果使用 PowerShell,则使用 source activate / activate.bat / activate.ps1)

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

    导航到您的项目目录并在那里打开 Visual Studio Code。

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

    在 Visual Studio Code 中,转到菜单 FilePreferencesSettings(不用担心您不需要打开JSON 文件)

    在设置搜索栏中,搜索virtual / venv并点击Enter。您应该在搜索栏中找到以下内容:

Python:Venv Folders 主目录中要查找的文件夹 虚拟环境(支持 pyenv、direnv 和 virtualenvwrapper 默认)。

    添加一个项目,然后输入您的 virtuanenv 脚本的路径,其中包含激活文件。比如在我的系统中是:

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

    保存并重新启动 Visual Studio Code。

    要重新启动,请再次打开 cmd,导航到您的项目路径并打开 Visual Studio Code。 (请注意,在从 cmd 打开 Visual Studio Code 之前,应在 cmd 中激活您的 venv)

从 cmd 打开 Visual Studio Code 的命令:

code .

【讨论】:

【参考方案16】:

这是对 Sam 的回答的补充,虽然它是正确的,但忽略了这样一个事实,即无论何时您在 Visual Studio Code 中打开一个文件夹,它都会创建一个 .vscode 文件夹,但这些可以是多个,在您最终打开目录时创建。

.vscode 文件夹包含 JSON 对象,其中包含“setting.json”等属性,其中声明要在“.vscode”级别使用的 解释器 (请参阅 What is a 'workspace' in Visual Studio Code? 了解更多说明)。


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

因此,您可能可以在虚拟环境中的另一个级别打开 Visual Studio Code。它创建了另一个 .vscode 文件夹,该文件夹假定为 Python 目录,全局机器的目录,因此出现这样的错误,如果虚拟环境被激活与否,我是否经历过无关紧要。

这确实发生在我身上。我确实有一个 DjangoRESTAPI_GEN 文件夹,我最初在其中打开了 IDE,它确实识别了虚拟环境 Python 路径。然后几天后我在 Git 所在的级别打开它,所以它确实创建了另一个 .vscode 文件夹,该文件夹选择了全局 Python 解释器,导致我在虚拟环境中的 lint 没有被使用。

虚拟环境解释器甚至没有显示在“选择python解释器”中。但正如所写,在 .vscode 文件夹所在级别打开 IDE,该文件夹具有正确路径的 settings.json 文件。

setting.json 文件中设置正确路径并选择虚拟环境解释器后,Visual Studio Code 将自动在其终端中激活虚拟环境:

【讨论】:

这里没有任何名为“Sam”的当前用户。参考什么答案? 好吧,我现在看不到这一点,我很确定在我回答的时候,有一个具有该名称配置文件的答案。只要我知道(我自己也知道)SO 中的用户名可以更改【参考方案17】:

我遇到了同样的问题,这是因为 PowerShell 没有更新。有时 Windows 会保留版本 2.*,而我必须手动下载并安装版本 3。

之后问题就解决了,我可以很好的使用虚拟环境了。

【讨论】:

PowerShell 版本 3 添加/更改了哪些内容以解决原始问题?【参考方案18】:

激活您的环境。

你也可以试试这个:

Using Python environments in Visual Studio Code

【讨论】:

当我在 VS Code 的 cmd 终端中运行 activate 时,它被激活。但是我需要更改 VS Code gui 中的解释器,以便识别我的导入。【参考方案19】:

对于 Mac 用户,请注意这个 bug:当您点击“输入解释器路径”时,您有两种选择:(1)手动输入路径; (2) 从Finder中选择venv文件。

仅当我手动输入路径时才有效。使用 Finder 进行选择会产生一些奇怪的路径,例如我理解的 Library/Developer/CommandTools/...

【讨论】:

【参考方案20】:

很多人都提到了python.pythonPath 方法。

另一种方法是在launch.json 中添加envFile,如下所示:

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

【讨论】:

这很有帮助,$workspaceFolder -- 确实是我想要的。如果您正在为虚拟环境进行工作区设置,请不要认为绝对路径有意义,这仅适用于项目。【参考方案21】:

我遇到了同样的问题,直到我发现我正在尝试使我的项目目录和虚拟环境保持一致 - 这是不正确的。

我有一个 \Code\Python 目录,用于存储我的所有 Python 项目。 我的 Python 3 安装在我的路径上。

如果我想用自己的虚拟环境创建一个新的 Python 项目(Project1),那么我这样做:

python -m venv Code\Python\Project1\venv

然后,只需在 Visual Studio Code 中打开文件夹 (Project1) 即可确保使用正确的虚拟环境。

【讨论】:

使用 Codium,我仍然需要通过单击左下角的解释器状态并选择我的新 venv 来更改为 venv。

以上是关于如何在 Visual Studio Code 中为 Python 设置虚拟环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中为 Unity 函数名称获取智能感知?

如何在 Visual Code Studio 中为 pug lang 选择选项卡大小?

如何使用 anaconda3 在 Visual Studio Code 中为 python 启用智能感知?

如何在 Visual Studio Code 中为 Flutter 添加 iOS 模拟器?

如何在 WSL 的 Visual Studio Code 中为 PHP 开发设置我的 PHP 可执行路径?

Visual Studio 2017 中用于 JavaScript 和 TypeScript 文件的 Visual Studio Code 颜色主题