virtualenv怪异行为:被迫使用系统python解释器
编辑:TL;我可以看出我的问题模棱两可。综上所述,您可以理解,无论我做什么,virtualenv都会继续使用系统python解释器(从/usr/bin/),即使我通过virtualenv怪异行为:被迫使用系统python解释器,python,virtualenv,Python,Virtualenv,编辑:TL;我可以看出我的问题模棱两可。综上所述,您可以理解,无论我做什么,virtualenv都会继续使用系统python解释器(从/usr/bin/),即使我通过virtualenv-p手动指定它。奇怪的是,如果我使用virtualenv-p python3,它就可以工作了 好的,就这么定了 我有水蟒2,水蟒在路上。当前的python,virtualenv,pip来自anaconda2。 当我键入python时: Python 2.7.14 |Anaconda, Inc.| (default
virtualenv-p
手动指定它。奇怪的是,如果我使用virtualenv-p python3
,它就可以工作了
好的,就这么定了我有水蟒2,水蟒在路上。当前的
python
,virtualenv
,pip
来自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
时,对其进行源代码分析,哪个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
有问题。让我们用另一个吧”。通过指定标志-p
(我的机器上安装了许多python版本。这是一个远程服务器,有很多人访问它,我刚刚指出了我同事的一个python
。我可以肯定这里没有环境冲突,我们都使用virtualenv进行项目,并通过~/.bash\u别名
控制每个人的$PATH
首选项。)
没有帮助。我开始感到困惑。好的,可能是virtualenv
坏了。可能是pip
坏了。可能是anaconda
坏了。检查了路径,似乎正常。重新安装了所有内容,没有任何帮助
现在,我必须使用systempython
(至少它不是直接的/usr/bin/python
,而是/path/to/virtualenv/python
。至少我不需要到处都使用sudo
)。这里没有什么变化,但我感到非常不高兴,非常想知道原因。有谁能给我一个建议吗?我将不胜感激
提前感谢!这里有一个标志——始终在virtualenv中复制,它可以帮助您复制所有文件,而不是使用符号链接 --总是抄袭 始终复制文件,而不是符号链接
这将主要解决您的问题。很难理解您的问题。您在创建virtualenv时是否使用了
-p
标志?当您激活virtualenv时,$PATH
和$PYTHONPATH
变量的值是什么?1.是的,我使用了virtualenv-p
。2.当不在virtualenv中时:$PATH
是/virtual/path/:$OTHERPATH
。对我来说一切都很正常,我可以看到我的问题模棱两可。总之,你可以理解,无论我做什么,virtualenv都会继续使用系统python
解释器(来自/usr/bin/
),而不是anaconda
python解释器根本没有帮助。但是如果我指定python3
,它就可以工作。这甚至让我更加困惑:(你在使用哪个操作系统?尝试使用这个命令哪个python和哪个python3所有东西都指向anaconda目录。我通过export
命令手动控制环境(为了方便起见,我通常在~/.bash\u别名中添加条目)。我确实检查了python
,pip
,virtualenv
,一切正常。如果您使用的是linux或mac,他们已经预装了python 2.x。因此,当您键入python时,将使用python 2.x。现在我假设您已经安装了python 3,因此需要执行python 3命令才能访问它。这就是我问您的原因为了告诉大家哪个python和哪个python 3 outputI我已经使用python一年多了,我对它很熟悉。在OP中我说过,如果我在terminal中键入python
,它将使用anaconda的python。我可以肯定地告诉大家,这里没有与python
版本混淆相关的内容,因为我控制着环境请严格使用。请参见此屏幕截图。venv
是virtualenv名称。请注意我调用python
的两次:一次是2.7.12
,一次是2.7.13
,而它们应该是相同的
virtualenv -p python3 --always-copy python_env