通过GitBash创建的Windows虚拟环境,使用的是系统Python?

3
我注意到我在GitBash中创建的虚拟环境没有使用venv的python/pip可执行文件,并且pip试图安装东西到系统站点包中。我确定这在我上次检查时是正常工作的,所以我不知道出了什么问题,但这让我感到困惑,因为从我的角度来看,我已经做得没错。
我错过了什么?
我重现的步骤非常简单:
chris@windows-pc  MINGW64 ~
$ which python
/c/Program Files/Python37/python

chris@windows-pc  MINGW64 ~
$ which pip
/c/Program Files/Python37/Scripts/pip

chris@windows-pc  MINGW64 ~
$ python -m venv /c/venvs/test

chris@windows-pc  MINGW64 ~
$ . /c/venvs/test/Scripts/activate
(test)
chris@windows-pc  MINGW64 ~
$ which python
/c/Program Files/Python37/python
(test)
chris@windows-pc MINGW64 ~
$ which pip
/c/Program Files/Python37/Scripts/pip
(test)
chris@windows-pc  MINGW64 ~

我已经使用.source两个命令尝试过了,它们的行为都是一样的。

  • Python版本为3.7.3
  • Windows版本为10
  • 我不确定如何在这个系统上确定gitBash的版本

我重复了这些步骤,一切都正常工作,也许是 Git Bash 出了问题,你尝试重新安装它了吗?或者可能是 virtualenv 包。 - Kurose
很有可能Gitbash中存在一个bug,不幸的是系统被锁定了,我无法更改它。virtualenv库是Python 3.7.3中包含的标准库。 - chrisbunney
2个回答

7

我发现问题在 activate 脚本内存在错误,其中 VIRTUAL_ENV 环境变量有一个 Windows 风格的路径 (C:\path\to\env)。

因此,路径被设置错误,并且 virtualenv 的 Scripts 目录没有被正确添加到路径中(它在那里,但是 C:\ 中的冒号和反斜杠意味着该条目无效)。

手动编辑 activate 脚本并更改为 Unix 风格的路径即可解决问题。

这似乎是在 gitbash/windows 环境下运行时 Python 的 venv 模块中的一个 bug。


0

如果你在Windows上使用gitbash来激活你的虚拟环境,你需要使用source命令。

source /PATH/TO/VIRTUALENV/SCRIPTS/activate

谢谢,但似乎没有什么区别(我已经相应地更新了问题)。 - chrisbunney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接