[英]Visual Studio Code does not detect Virtual Environments
Visual Studio Code 不检测虚拟环境。 我在 venv 文件夹所在的文件夹中运行 vscode,当我在 vscode 中尝试 select kernel 时,我可以看到主环境和一个位于磁盘其他位置的环境。 运行在vscode中的jupyter也看不到这个环境。 我已经在这个环境中安装了ipykernel。 我试图重新安装 vscode 和 python 扩展。
我尝试在settings.json里面设置路径.vscode:
{
"python.pythonPath": ".\\venv\\Scripts\\python.exe"
}
Windows 10
Python 3.6.7(64 位)
VSCode 1.54.3
我找到的唯一解决方案是删除
venv
并重新创建它。 我遵循了这些步骤,但我将为 Windows 提供一个简短的摘要:
- 激活你的 virtualenv。 Go 到您的虚拟环境所在的父文件夹并运行
venv\scripts\activate
。 请记住,名字“venv”可能会有所不同。- 创建一个 requirements.txt 文件。
pip freeze requirements.txt
deactivate
退出 venvrm venv
删除 venvpy -m venv venv
创建一个新的pip install -r requirements.txt
安装需求。
这对我有用,我没有删除旧的,而是在 ~/Envs 文件夹C:\Users\Admin\Envs
Envs 中创建了一个新的python -m venv /path/newVenv
。 可能 VS Code 在 ~/Envs 文件夹中搜索,或者需要在 View -> Command Pallete -> >Preferences: Open User Settings 中添加到 python.path 中。
好的,我找到了解决方案。 首先卸载 Visual Studio Code。 Go 到C:\Users\Your_profile并删除与 Visual Studio Code 相关的以句点开头的文件夹。 然后打开显示隐藏文件夹和 go 到C:\Users\Your_profile\AppData 。 在文件查找器中键入 vscode 并删除与 Visual Studio Code 相关的所有 foders 和文件。 最后,安装 Visual Studio Code 并享受虚拟环境。 :)
在 VSCode 中打开你的命令面板——默认为Ctrl+Shift+P
寻找Python: Select Interpreter
在Select Interpreter
选择Enter interpreter path...
然后Find...
导航到您的venv
文件夹 - 例如, ~/pyenvs/myenv/
或\Users\Foo\Bar\PyEnvs\MyEnv\
在虚拟环境文件夹中选择<your-venv-name>/bin/python
或<your-venv-name>/bin/python3
The issue is that VSCode's Python extension by default uses the main python
or python3
program while venv
effectively creates a "new" python
/ python3
executable (that is kind of the point of venv
) so the extension does not have access to anything (available modules , 命名空间等),因为特定于venv
的安装对主venv
解释器不可用(同样,这是设计使然——就像安装在 VM 中的应用程序对主机操作系统不可用一样)
该线程上的任何建议都不适合我。 也就是说,我认为问题不在于 VS Code,而是 venv。 我最终安装了 PyCharm 来解决这个问题。 下载后:
PyCharm > 首选项 > 搜索“解释器” > 项目:Python 解释器 > 单击“+” > 在 Virtualenv 环境 > 新环境中(应该自动填充新环境的所有内容)。 Select 好的,好的,好的。
在左下角,您会看到 Git | 待办事项 | 问题 | 终端……等单击“终端”,您应该会看到您的环境已经激活。 从那里, pip3 安装您的依赖项。 关闭 PyCharm。
Go 回到 VS Code,打开你的项目,然后按照上面的建议将 Virtualenv(我的是 'venv': venv)作为你的解释器。
终于解决了。
如果您是 Linux 用户,并且您已使用此或类似方法创建虚拟环境:
python3 -m venv venv
并且您无法使调试工作,请删除您的 venv 并从 VS Code 终端创建它(单击 Ctrl + 反引号打开)。
当你从 VS Code 终端创建它时,VS Code 会询问你是否想使用它为这个工作区检测到的新环境,说是。
这里的部分混淆可能源于与 VScode 文档不一致的 UI 行为。 文档state:
当您创建一个新的虚拟环境时,将显示一个提示,允许您将其 select 用于工作空间。
在我的情况下并没有发生这种情况(VScode 1.66.2 在 Windows 10 上运行,带有 Remote - WSL 插件版本 0.66.2)。 我按照此处概述的步骤进行操作; 我没有看到 VScode 文档描述的弹出窗口,但单击状态栏中的 Python 解释器版本显示 VScode 已自动选择安装在虚拟环境中的解释器。 此外,我确实观察到 VScode 正在采购.venv/bin/activate
,如上面链接的帖子中所述
通过单击播放按钮运行代码,注意终端中的.venv和源“/Users/jemurray/Google Drive/scripts/personalPython/helloworld/.venv/bin/activate”显示脚本已激活并在虚拟中运行环境
1.在VSCode中打开你的命令面板——默认是Ctrl+Shift+P
2.寻找Python:Select解释器
3.在Select解释器中选择输入解释器路径...然后查找...
4.找到env文件夹,打开Scripts文件夹,选择python或python3
windows - venv
我在脚本中使用名为"venv"的虚拟环境时遇到了同样的错误,因此搜索Visual Studio 文档时,我发现虚拟环境以点"."开头。 但他们从未提及这一点,然后我创建了我的虚拟环境“.venv”并修复了错误:
https://code.visualstudio.com/docs/python/environments#_create-a-virtual-environment
在我自己的情况下,我试图激活 windows powershell 中的 venv,而 venv 是在 wsl 中创建的。 所以我不得不用 powershell 重新创建 venv,尽管使用不同的环境名称并重新安装要求。
这就是答案。 将此添加到您的用户和/或工作区设置。json 文件:
"python.defaultInterpreterPath": "${env:VIRTUAL_ENV}"
。
然后,当您第一次从活动虚拟环境启动工作区时,vscode 将正确设置解释器。 此后它将使用上次关闭工作区时设置的任何解释器。 只要您不手动更改它,就可以了。 对于现有工作区,只需手动设置解释器,vscode 将始终使用先前 session中的解释器。 它永远不会使用 settings.json(或.env 或.venv)中的任何内容,除非第一次启动工作区(在这种情况下,我认为它只使用上面显示的 settings.json 名称-值对)。
对于由pyenv-virtualenv
(或virtualenvwrapper
)管理的 virtualenvs,这将按原样工作。 也应该适用于常规的virtualenv
。 对于conda
,将VIRTUAL_ENV
替换为它使用的任何内容,假设它设置了一个类似的变量。 只需激活一些东西并键入env
即可查看所有环境变量。
这是解决办法只要你创建一个virtualenv,然后第一次启动一个workspace,并且workspace和virtualenv之间的关联不会改变。 不幸的是,如果关联发生变化,您似乎必须手动设置解释器,但您只需执行一次。
官方解释在这里,特别是解释器存储在内部的地方,即不在任何暴露给用户的配置文件中:
“python.venvPath”是提供venv路径的命令。
在 VScode settings.json添加
"python.terminal.activateEnvironment": true,
"python.venvPath": "Add_Venv_DirectoryPath_here",
经过一番搜索后,我在 vs-code 设置中找到了下一个属性,它为我解决了这个问题: Python: Env File
,默认值为${workspaceFolder}/.env
。
通常我将我的 venv 文件夹.venv
,所以我将设置固定为${workspaceFolder}/.venv
。
现在venv python版本出现在select解释器选项中。
我有类似的问题,并找到了一个非常简单的解决方案。 我正在使用 Mac,这就是它的工作原理。
我的开发文件夹结构如下:“Users/my_user_name/Dev/venv” 我在“venv”上的同一级别创建了多个虚拟环境。 问题是我用“Users/my_user_name/Dev/venv1”或虚拟环境之一填写“python.venvPath”。 这会阻止 VS Code 表单检测我的其他虚拟环境。 所以修复非常简单,只需将“python.venvPath”的值从“Users/my_user_name/Dev/venv1”更改为这个“Users/my_user_name/Dev/”,瞧,它检测到我所有的虚拟环境。
我希望这个答案可以帮助遇到类似问题的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.