Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
virtualenv怪异行为:被迫使用系统python解释器_Python_Virtualenv - Fatal编程技术网

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

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

编辑:TL;我可以看出我的问题模棱两可。综上所述,您可以理解,无论我做什么,virtualenv都会继续使用系统python解释器(从/usr/bin/),即使我通过
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
坏了。检查了路径,似乎正常。重新安装了所有内容,没有任何帮助

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

这里有一个标志——始终在virtualenv中复制,它可以帮助您复制所有文件,而不是使用符号链接

--总是抄袭

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


这将主要解决您的问题。

很难理解您的问题。您在创建virtualenv时是否使用了
-p
标志?当您激活virtualenv时,
$PATH
$PYTHONPATH
变量的值是什么?1.是的,我使用了
virtualenv-p
。2.当不在virtualenv中时:
$PATH
de>/anaconda/path/:$OTHERPATH,在virtualenv中时:
/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