virtualenv怪异的行为:被迫使用系统python解释器

时间:2018-08-13 04:15:06

标签: python virtualenv

编辑:TL; DR:我可以看到我的问题是模棱两可的。总结,您可以理解,无论我做什么,virtualenv都会继续使用系统python解释器(来自/ usr / bin /),即使我通过virtualenv -p手动指定了它。奇怪的是,如果我使用virtualenv -p python3,它会起作用。

好,这是交易
我有anaconda2,而anaconda在PATH中。当前的pythonvirtualenvpip来自anaconda2。
当我输入python时:

Python 2.7.14 |Anaconda, Inc.| (default, Dec  7 2017, 17:05:42) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

当我创建新的virtualenv并为其提供源时,which python确实显示了virtualenv中的python解释器,但是当我运行python时,发生了一些奇怪的事情:

Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

据我所知,virtualenv将使用安装了virtualenv的python解释器(virtualenv --help如此)。该2.7.12 python,与上述python(2.7.14)不同。

所以我认为“好吧,我的anaconda2的python可能有问题。让我们再使用一个。”我通过指定标志python使用了另一个-p(我的机器上安装了许多python版本。这是一台远程服务器,有很多人在访问它,我只是指向我的一位同事{{ 1}}。我可以确定这里没有环境冲突,我们都使用virtualenv进行项目,并通过python来控制每个人的$PATH偏好设置

没有帮助。我开始感到困惑。好吧,~/.bash_aliases坏了。也许virtualenv坏了。也许pip坏了。检查路径,看来是正常的。重新安装了所有内容,没有任何帮助。

现在,我必须使用系统anaconda(至少不是直接使用python,而是使用/usr/bin/python。至少我不需要到处使用/path/to/virtualenv/python)。这里没什么大变化,但我感到非常不高兴,非常想知道原因。 谁能给我一个建议?我将不胜感激
预先感谢!

1 个答案:

答案 0 :(得分:0)

virtualenv中有一个标志-always-copy ,可帮助您复制所有文件,而不是使用符号链接。

  

-始终复制

     

始终复制文件而不是符号链接。

virtualenv -p python3 --always-copy python_env

这基本上可以解决您的问题。