【问题标题】:VSCode does not recognize venv(Python)VSCode 不识别 venv(Pyt​​hon)
【发布时间】:2021-09-21 12:15:34
【问题描述】:

当我使用 venv python 包创建新项目和虚拟环境时,VSCode 无法识别新的虚拟环境。我遵循以下说明:

https://code.visualstudio.com/docs/python/environments

我在VSCode集成终端中使用的命令是:

python -m venv .venv

我使用的终端是PowerShell 7,但我也尝试了CMD终端。

运行此命令后,.venv 文件夹在工作区中创建得非常好,我在终端上检查了它的行为。

我尝试使用 conda 包管理器创建一个 venv 并且 VSCode 可以识别它。问题仅出在 venv Python 包上。

我也尝试了另一个Python版本来创建venv,但是问题仍然存在。

我读到了这个问题:

How can I set up a virtual environment for Python in Visual Studio Code?

我知道如何手动添加环境,但我希望 VSCode 能够自动识别我的环境。

我将这些行添加到 settings.json(首选项):

"python.venvPath": "~/.venv",
"python.venvFolders": [
    "~/.venv/Scripts"
]

我使用 VSCode 集成终端手动激活了 venv。

问题还没有解决。

这是我的问题的截图:

A testing workspace screenshot

我知道如何手动添加环境,但我希望它是自动的。

我在另一台 PC 上尝试了 VSCode,它成功了;除了 venv 的存在,它不需要做任何事情。

我真的不知道我还能做什么。 请帮帮我。

VSCode 版本:1.58.0 Python 扩展版本:v2021.6.944021595

【问题讨论】:

  • 你的python.venvPath不应该是.\.venvpython.venvFolders".\.venv\Scripts"吗?您也可以尝试将 python.venvPath 设置为 ${workspaceFolder}\.venv 并从工作区位置的 venv 路径解析。
  • 感谢您的关注@OluwafemiSule。我试过你的代码行:"python.venvPath": "${workspaceFolder}\\.venv","python.venvFolders": [ ".\\.venv\\Scripts" ]但是问题没有解决。

标签: python visual-studio-code vscode-settings python-venv


【解决方案1】:

“python.venvPath”应该设置为.venv文件夹的parent folder

位于由 python.venvPath 设置(请参阅常规设置),其中可以包含 多个虚拟环境。扩展寻找虚拟 venvPath 的一级子文件夹中的环境。

但是,您不需要设置它。 Python 扩展应该找到venv 环境,因为它就位于您的工作区文件夹下。

位于工作区(项目)正下方的虚拟环境 文件夹。

我在本地尝试过,它也不起作用。它只会显示缓存的环境路径,“python.venvPath”也不起作用。

还有解释器存储的一些变化:

引入了 VSCode 内部存储,现在将存储 工作区和工作区文件夹范围内的解释器设置。

您可以参考here了解更多详情。

所以,现在建议手动选择环境路径。

【讨论】:

  • @Erfan Rasti 我在 GitHub 上提交了一个问题:github.com/microsoft/vscode-python/issues/16665
  • 感谢您的完整解释。我认为这是 VSCode 新更新中的一个错误。 @Steven-MSFT
  • @Erfan Rasti 是的,看起来 Python 扩展有问题。
  • 很高兴看到这不仅发生在我身上。我花了太多时间试图解决这个问题。同时,我所做的是将工作区设置 python.defaultInterpreterPath 添加到 venv 解释器的路径,它对我有用。但是如果自动检测有效的话会更容易......
【解决方案2】:

在 VS CodeTerminal 中编写此命令后

python -m venv env

你可以简单地使用

.\env\Scripts\Activate

在您创建虚拟环境的同一目录路径中。

【讨论】:

  • 同样在 settings.json 中,您可以设置此属性 "python.terminal.activateEnvInCurrentTerminal": true 为您执行此操作。请注意,必须先加载 Python 扩展。
  • 正如我之前提到的,我尝试了您的命令,但没有成功。 @AnirudhThakur 谢谢
  • 我也尝试了您的 JSON 行,但没有成功。 @JasonCook 谢谢
猜你喜欢
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2021-07-17
  • 1970-01-01
  • 2021-12-05
  • 2020-10-31
相关资源
最近更新 更多