繁体   English   中英

在 Visual Studio Code 中自动激活虚拟环境

[英]Auto activate virtual environment in Visual Studio Code

我希望 VS Code 在运行时打开 venv,但我找不到如何做到这一点。 我已经尝试添加到 settings.json 这一行:

"terminal.integrated.shellArgs.windows": ["source${workspaceFolder}\env\Scripts\activate"]

但是,它给我一个 127 错误代码。 我找到了 127 代码的含义。 这意味着, Not found 但是,如果我现在看到我的 venv 文件夹,怎么找不到呢?

我认为是终端故障。 我正在使用带有 Git Bash 终端的 Win 10,当您将 Git 安装到您的机器时就会出现。

这就是我在 2021 年的做法:

  1. 在您的 vs 代码中输入Ctrl + Shift + P。

  2. 找到您的虚拟环境:

    Python: select 解释器>进入解释器路径>查找

  3. 一旦你找到你的虚拟环境 select 你的 python 版本:

    你的虚拟环境 > bin > python3

  4. 现在在您的项目中,您将看到.vscode目录在其中创建了打开的settings.json并添加:

    "python.terminal.activateEnvironment": true

    不要忘记在之前添加逗号以将其与已经存在的键值对分开。

  5. 现在重新启动终端。

您应该会看到您的虚拟环境自动激活。

实际上,早期建议的解决方案对我不起作用,而是在我的设置中添加了以下内容:

"settings": {
    "python.terminal.activateEnvInCurrentTerminal": true,
    "python.defaultInterpreterPath": "~/venv/bin/python"
}

当然用你自己的路径替换defaultInterpreterPath(以前是pythonPath)设置(所以不要复制/粘贴第二行)。

你根本不需要这条线。 只需将其删除并切换 Python 解释器以指向venv中的解释器。 这是一个相关文档(斜体强调我的):

要 select 特定环境,使用Python:Select 解释器命令来自命令面板( Ctrl + Shift + P )。

...并使用终端打开终端:创建新的集成终端命令。 在后一种情况下, VS Code 会自动激活所选环境。

切换解释器后,VS 代码应在工作区中创建一个.vscode文件夹,其中包含一个settings.json ,指示 python 解释器。 这将为 VS 代码提供定位venv的方向。

有一个可以使用的新标志: "python.terminal.activateEnvironment": true

我的情况几乎相同。 I am running VSCode on Windows, wanting to used git bash as my default Terminal but after the venv got created, it was doing some weird stuff when a Terminal would open where it couldn't find the correct python interpeter in the venv/Scripts folder即使我做了很多次 ctrl-shift-p 将其重置为 python.exe 那里。 我还想确保激活脚本在终端打开时运行。 我只是无法让调试器正常工作,它一直抱怨找不到 python 解释器,所以我根本无法调试。

So for anyone who is having weird stuff happen trying to use a Git Bash Terminal in VSCode in Windows related to a python project using a virtual env, here is what I found out;

  1. 我注意到,当我打开一个新的 Git Bash 终端并查看 $PATH 变量以确保它可以在 venv 中找到解释器时,venv/Scripts 文件夹的路径将被添加到 $PATH 之前,但不是linux 路径分隔符与 $PATH 中的其他所有内容一样,但具有 Windows 样式路径;
echo $PATH
C:\Users\blah\Documents\blah\Stock-down\Dev\this_api\venv/Scripts:/c/Users/blah/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/blah/bin:/c/Program Files/Go/bin:/c/Python39/Scripts: 

因此,每当我尝试调试,甚至只是运行 which python 时,它都会感到困惑,并认为解释器在这里;

which python
C:\Users\blah\Documents\blah\Stock-down\Dev\this_api\venv/Scripts/C/Users/blah/Documents/blah/Stock-down/Dev/this_api/venv/Scripts/python.exe
  1. 我在终端中运行了“printenv”命令来查看设置了哪些环境变量以及为什么 venv 解释器路径变得混乱。 我发现了一个我不知道存在的环境变量——VIRTUAL_ENV。 但我不知道它是如何设置的,也不知道它是从哪里来的。 经过一番痛苦并四处寻找,我发现了它-当您运行“python -m venv venvname”以在项目文件夹中创建虚拟环境时,如您所知,它会在./venv/Scripts 文件夹。 在这些文件中,这个 VIRTUAL_ENV 变量不仅被导出,而且被添加到终端上的 $PATH 变量中,并以 linux 路径样式添加了“/Scripts”文件夹名称。 问题在于它使用 windows 类型路径设置 VIRTUAL_ENV 值 - 我知道这样做很痛苦和错误,但我只是将其更改为 Git Z7024FF0860DEC6AB1519A3F71C7D7 的内容,见下文;
#unset irrelevant variables
deactivate nondestructive

#VIRTUAL_ENV="C:\Users\blah\Documents\blah\Stock-down\Dev\this_api\venv"
VIRTUAL_ENV="/c/Users/blah/Documents/blah/Stock-down/Dev/st_api/venv"
export VIRTUAL_ENV

_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/Scripts:$PATH"
export PATH
  1. 现在,当打开一个新的 Git Bash 终端时,它会将 venv/Scripts 路径正确添加到 $PATH;
echo $PATH
/c/Users/blah/Documents/blah/Stock-down/Dev/st_api/venv/Scripts:/c/Users/blah/bin:/mingw64/bin:/usr/local/bin:/usr/bin:/bin:/mingw64/bin:/usr/bin:/c/Users/blah/bin:/c/Program Files/Go/bin:/c/Python39/Scripts: 
  1. 我还在 ./venv/Scripts 目录中制作了可执行 python.exe 的副本,并将其命名为“python”,现在命令“which python”有效,我可以正常调试了。 当我在选择过程中只使用“find”时,当我在 VSCODE 中选择解释器为“python.exe”时,我仍然设置 ctrl-shift-P。

有关 VIRTUAL_ENV var 的更多信息,请参阅此文档 -- python venv 文档

It feels like jumping through a bunch of hoops I know, but this way I can open a new Git Bash Terminal, have the activate script run correctly on Terminal Open, debug, and operate normally without having to float between Git Bash AND WSL Ubuntu AND Powershell等

根据本文的建议,我的环境开始自动激活

当您创建一个新的虚拟环境时,将显示一个提示,允许您将其 select 用于工作空间。 这会将 Python 解释器的路径从新的虚拟环境添加到您的工作区设置。 然后通过 Python 扩展安装包和运行代码时将使用该环境。 有关在项目中使用虚拟环境的示例,请参阅 Python、Django 和 Flash 教程。

我的解决方案是手动创建 /.vscode/settings.json

这是树;

├───django
│   ├───.vscode
│   │   ├───settings.json

I created /.vscode/settings.json then added this code in settings.json (I am using windows so I used double backslash for path location otherwise it gives unicode error, and don't copy paste this, find your own.virtualenvs)

{
    "python.defaultInterpreterPath": "C:\\Users\\Talha\\.virtualenvs\\django-okd21pq9\\Scripts\\python.exe"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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