虚拟环境调用 Python 的全局安装而不是特定于 venv 的版本

Virtual Environment calling global installation of Python instead of venv-specifc version

我遇到一个问题,出于某种原因,我正在创建的虚拟环境正在访问我的系统范围安装的 Python 和 pip,而它们不应该访问。

这是我相当简单的工作流程,只是确保我没有遗漏任何明显的东西(Windows 10,Python 3.8.2):

python -m venv venv
venv\Scripts\activate.bat

如您所料,我的路径现在前面加上了 (venv)。然而,

pip list

列出我拥有的所有系统范围的 pip 包,而不仅仅是那些应该在那个 venv 中的包。

pyvenv.cfg表示

include-system-site-packages = false

当我使用

打开解释器时
python

在虚拟环境中,

sys.executable    

Returns我的C盘路径和

print(pip.__file__)

也一样。我怀疑他们应该改为指向虚拟环境中的解释器和 pip,但不知道如何实现。

编辑:4/27/20,仍在处理这个问题,我已经尝试过:

我真的在这里不知所措,将不胜感激。

对于后来看到这个的人,我最终意识到问题只发生在特定的文件夹中。在我的计算机上的其他地方创建虚拟环境似乎工作正常。为什么会这样?我不知道。我很好奇,但还不足以在这个问题上多花一秒钟。就这样吧。

我也遇到过这种情况。我的问题是我在包含全局可执行文件的目录下创建了虚拟环境(我的意思是 C:\Program Files\Python39)。一旦我删除了这个虚拟环境并在其他地方创建了一个新环境(例如 C:\Python),运行 python 命令将在虚拟环境而不是全局环境中获取可执行文件。

我也遇到了同样的问题。可能是你的虚拟环境的路径有一个 字符,里面有重音符号 。这基本上意味着您必须更改 \Scripts\activate.bat 文件。 为了查看是否是这种情况,请使用以下过程:

  1. 通过运行文件\Scrips\activate.bat
  2. 激活虚拟环境
  3. 运行以下命令:
echo %PATH%

应该出现一堆路径,path\to\your\virtual\environment\Scripts第一个(这是必须的)。检查此路径是否与预期完全相同(意味着它不应包含“奇怪”字符,而不是带重音符号的字符)。 如果有任何差异,我建议您根据 更改 \Scripts\activate.bat,重新打开命令提示符并再次执行步骤 1 和 2 以查看您的问题是否已解决。