繁体   English   中英

Visual Studio Code 不检测虚拟环境

[英]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

VS Code:Python 解释器找不到我的venv

我找到的唯一解决方案是删除venv并重新创建它。 我遵循了这些步骤,但我将为 Windows 提供一个简短的摘要:

  1. 激活你的 virtualenv。 Go 到您的虚拟环境所在的父文件夹并运行venv\scripts\activate 请记住,名字“venv”可能会有所不同。
  2. 创建一个 requirements.txt 文件。 pip freeze requirements.txt
  3. deactivate退出 venv
  4. rm venv删除 venv
  5. py -m venv venv创建一个新的
  6. 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 并享受虚拟环境。 :)

  1. 在 VSCode 中打开你的命令面板——默认为Ctrl+Shift+P

  2. 寻找Python: Select Interpreter

  3. Select Interpreter选择Enter interpreter path...然后Find...

  4. 导航到您的venv文件夹 - 例如, ~/pyenvs/myenv/\Users\Foo\Bar\PyEnvs\MyEnv\

  5. 在虚拟环境文件夹中选择<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之间的关联不会改变。 不幸的是,如果关联发生变化,您似乎必须手动设置解释器,但您只需执行一次。

官方解释在这里,特别是解释器存储在内部的地方,即不在任何暴露给用户的配置文件中:

来自 vscode 文档的带圆圈的文本表明他们说他们在内部存储了先前会话中的解释器

VS 代码中的这个问题已为我修复,我只是在 VS 代码中使用命令提示符而不是 PowerShell 作为终端在此处输入图像描述

“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解释器选项中。

vs code venv 文件属性

我有类似的问题,并找到了一个非常简单的解决方案。 我正在使用 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.

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