VS Code 在解释器上找不到虚拟环境,但是在集成终端上可以找到

VS Code cannot find virtual environment on the interpreter, but can find it on integrated terminal

我的 Linux 机器上安装了一个完全可用的虚拟环境。 这个venv可以被终端在VS code调用中正常使用source /mypath/venv/bin/activate.

问题是 VS 代码中的 Python 解释器无法访问虚拟环境中的任何包,尽管已按照大多数指南中的描述在解释器上设置路径。

我决定在.vscode文件夹里面的settings.json文件里面手动设置路径如下:

{   
   "python.pythonPath": "/mypath/venv/bin/python3.8"
}

venv 仍然无法通过解释器访问。还有其他建议吗?

您实际上不需要 settings.json 文件。我最近也遇到了很多问题。

您可以尝试通过

删除 .venv 文件夹并创建一个新文件夹

python -m venv .env

似乎 vs code 已经将一些东西从 .venv 更改为 .env。我不知道为什么。

完成后 python -m venv .env 在 vs 代码中打开终端,它将激活你的 .env。

你可以(如果你冻结了你的 pip 安装)做一个 pip install -r requirements.txt 就可以了。

“python.envFile”设置的默认值是“${workspaceFolder}/.env”,将其更改为“${workspaceFolder}/.venv”并重新启动vscode。

我会回答我自己的问题。 结果我的 pip 安装指向的路径(标准 /home/username/.local/bin/pip)与我的 venv 目录(/my_path/venv/bin/pip)不同。 执行命令which pip.

即可显示路径

在我非常具体的情况下,当我第一次设置我的 Linux 机器时有一些 mix-up,这意味着 venv 只安装了少量的包,而目录包含 Python 库并且实际使用的是 pip 路径。换句话说,激活 venv 没有任何区别,因为 Python 库是从 pip 路径加载的。

所以,首先我必须确保 pip 必须指向我的 venv 文件夹,方法是修改 /home/username/ 中的 .bashrc 文件,替换

export PYTHONPATH=/home/username/.local/lib/python3.8
export PATH=/home/username/.local/bin:$PATH

export PYTHONPATH=/my_path/venv/lib/python3.8/
export PATH=/my_path/venv/bin:$PATH 

之后我所要做的就是 re-installing 较新的 venv 中的每个必需包(从旧的 pip 路径生成 requirements.txt 文件有帮助) .

然后我在 VS Code 解释器中选择了 venv 路径,现在一切正常。