在 Visual Studio 代码中自动激活虚拟环境
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 安装到您的机器时就会出现。
你根本不需要这一行。只需删除它并将您的 Python 解释器切换为指向您的 venv
中的解释器。 Here's a relevant documentation(斜体强调我的):
To select a specific environment, use the Python: Select Interpreter
command from the Command Palette (Ctrl+Shift+P).
... and
opening a terminal with the Terminal: Create New Integrated Terminal
command. In the latter case, VS Code automatically activated the
selected environment.
切换解释器后,VS 代码应在您的工作区内创建一个 .vscode
文件夹,其中 settings.json
指示 python 解释器。这将为 VS 代码提供 venv
.
的定位方向
有一个可以使用的新标志:"python.terminal.activateEnvironment": true
这就是我在 2021 年的做法:
在你的vs代码中输入Ctrl+Shift+P .
找到您的虚拟环境:
Python: select解释器 > 输入解释器路径 > 查找
找到虚拟环境后 select 您的 python 版本:
你的虚拟环境 > bin > python3。
现在在你的项目中你会看到 .vscode 目录创建打开 settings.json 在其中添加:
"python.terminal.activateEnvironment": true
不要忘记在之前添加逗号以将其与已经存在的键值对分开。
现在重启终端。
您应该会看到您的虚拟环境已自动激活。
实际上之前建议的解决方案对我不起作用,而是在我的设置中添加了以下内容:
"settings": {
"python.terminal.activateEnvInCurrentTerminal": true,
"python.defaultInterpreterPath": "~/venv/bin/python"
}
当然把defaultInterpreterPath(以前是pythonPath)设置换成你自己的路径(所以不要copy/paste第二行)
我的情况几乎相同。我在 Windows 上 运行ning VSCode,想使用 git bash 作为我的默认终端,但是在创建 venv 之后,它做了一些奇怪的事情当终端打开时无法在 venv/Scripts 文件夹中找到正确的 python interpeter,即使我按 ctrl-shift-p 多次将其重置为 python.exe那里。我还想确保激活脚本在终端打开时是 运行。我只是无法让调试器正常工作,它一直抱怨找不到 python 解释器,所以我基本上无法调试。
因此,对于遇到奇怪事情的任何人来说,尝试使用 Git Bash 中的 VSCode 中的 Windows 终端与 python 项目相关使用虚拟环境,这是我发现的;
- 我注意到当我打开一个新的 Git Bash 终端时,查看 $PATH 变量以确保它可以在 venv 中找到解释器,venv/Scripts 文件夹将被添加到 $PATH 之前,但不像 $PATH 中的所有其他内容那样使用 linux 路径分隔符,而是使用 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:
所以每当我尝试调试时,甚至 运行 哪个 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
- 我 运行 在终端中使用“printenv”命令来查看设置了哪些环境变量以及为什么 venv 解释器路径变得混乱。我发现了一个我不知道存在的环境变量 - VIRTUAL_ENV。但我不知道它是如何设置的,也不知道它是从哪里来的。经过一些痛苦,我发现了它 - 当你 运行 "python -m venv venvname" 在项目文件夹中创建虚拟环境时,如你所知,它会创建激活(和 activate.bat for windows) ./venv/Scripts 文件夹中的脚本。在这些文件中,这个 VIRTUAL_ENV 变量不仅被导出,而且在打开的终端上添加到 $PATH 变量之前,并在 linux 路径样式中添加了“/Scripts”文件夹名称。问题在于它使用 windows 类型路径设置 VIRTUAL_ENV 值 - 我知道这样做很痛苦而且是错误的,但我只是将其更改为 Git Bash期待中,见下文;
#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
- 现在,当打开新的 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:
- 我还在 ./venv/Scripts 目录中复制了可执行文件 python.exe 并将其命名为“python”,现在命令“which python “有效,我可以很好地调试。当我在 VSCODE 中选择解释器时,我仍然将 ctrl-shift-P 设置为“python.exe”,而我在选择过程中只使用“查找”。
有关 VIRTUAL_ENV var 的更多信息,请参阅此文档 -- python venv docs
感觉就像跳过一堆我知道的箍,但这样我可以打开一个新的 Git Bash 终端,在终端打开时正确激活脚本 运行 、调试和正常运行,而不必在 Git Bash AND WSL Ubuntu AND Powershell 等之间浮动
我希望 VS Code 打开 venv 运行,但我找不到如何操作。 我已经尝试将此行添加到 settings.json:
"terminal.integrated.shellArgs.windows": ["source${workspaceFolder}\env\Scripts\activate"]
但是,它向我抛出 127 错误代码。我找到了 127 代码的含义。这意味着,Not found
。但是怎么找不到,如果我现在看到我的venv文件夹?
我认为这是绝症。我正在使用带有 Git Bash 终端的 Win 10,当您将 Git 安装到您的机器时就会出现。
你根本不需要这一行。只需删除它并将您的 Python 解释器切换为指向您的 venv
中的解释器。 Here's a relevant documentation(斜体强调我的):
To select a specific environment, use the Python: Select Interpreter command from the Command Palette (Ctrl+Shift+P).
... and opening a terminal with the Terminal: Create New Integrated Terminal command. In the latter case, VS Code automatically activated the selected environment.
切换解释器后,VS 代码应在您的工作区内创建一个 .vscode
文件夹,其中 settings.json
指示 python 解释器。这将为 VS 代码提供 venv
.
有一个可以使用的新标志:"python.terminal.activateEnvironment": true
这就是我在 2021 年的做法:
在你的vs代码中输入Ctrl+Shift+P .
找到您的虚拟环境:
Python: select解释器 > 输入解释器路径 > 查找
找到虚拟环境后 select 您的 python 版本:
你的虚拟环境 > bin > python3。
现在在你的项目中你会看到 .vscode 目录创建打开 settings.json 在其中添加:
"python.terminal.activateEnvironment": true
不要忘记在之前添加逗号以将其与已经存在的键值对分开。
现在重启终端。
您应该会看到您的虚拟环境已自动激活。
实际上之前建议的解决方案对我不起作用,而是在我的设置中添加了以下内容:
"settings": {
"python.terminal.activateEnvInCurrentTerminal": true,
"python.defaultInterpreterPath": "~/venv/bin/python"
}
当然把defaultInterpreterPath(以前是pythonPath)设置换成你自己的路径(所以不要copy/paste第二行)
我的情况几乎相同。我在 Windows 上 运行ning VSCode,想使用 git bash 作为我的默认终端,但是在创建 venv 之后,它做了一些奇怪的事情当终端打开时无法在 venv/Scripts 文件夹中找到正确的 python interpeter,即使我按 ctrl-shift-p 多次将其重置为 python.exe那里。我还想确保激活脚本在终端打开时是 运行。我只是无法让调试器正常工作,它一直抱怨找不到 python 解释器,所以我基本上无法调试。
因此,对于遇到奇怪事情的任何人来说,尝试使用 Git Bash 中的 VSCode 中的 Windows 终端与 python 项目相关使用虚拟环境,这是我发现的;
- 我注意到当我打开一个新的 Git Bash 终端时,查看 $PATH 变量以确保它可以在 venv 中找到解释器,venv/Scripts 文件夹将被添加到 $PATH 之前,但不像 $PATH 中的所有其他内容那样使用 linux 路径分隔符,而是使用 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:
所以每当我尝试调试时,甚至 运行 哪个 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
- 我 运行 在终端中使用“printenv”命令来查看设置了哪些环境变量以及为什么 venv 解释器路径变得混乱。我发现了一个我不知道存在的环境变量 - VIRTUAL_ENV。但我不知道它是如何设置的,也不知道它是从哪里来的。经过一些痛苦,我发现了它 - 当你 运行 "python -m venv venvname" 在项目文件夹中创建虚拟环境时,如你所知,它会创建激活(和 activate.bat for windows) ./venv/Scripts 文件夹中的脚本。在这些文件中,这个 VIRTUAL_ENV 变量不仅被导出,而且在打开的终端上添加到 $PATH 变量之前,并在 linux 路径样式中添加了“/Scripts”文件夹名称。问题在于它使用 windows 类型路径设置 VIRTUAL_ENV 值 - 我知道这样做很痛苦而且是错误的,但我只是将其更改为 Git Bash期待中,见下文;
#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
- 现在,当打开新的 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:
- 我还在 ./venv/Scripts 目录中复制了可执行文件 python.exe 并将其命名为“python”,现在命令“which python “有效,我可以很好地调试。当我在 VSCODE 中选择解释器时,我仍然将 ctrl-shift-P 设置为“python.exe”,而我在选择过程中只使用“查找”。
有关 VIRTUAL_ENV var 的更多信息,请参阅此文档 -- python venv docs
感觉就像跳过一堆我知道的箍,但这样我可以打开一个新的 Git Bash 终端,在终端打开时正确激活脚本 运行 、调试和正常运行,而不必在 Git Bash AND WSL Ubuntu AND Powershell 等之间浮动