在Mac OS X中使用virtualenv出现问题

43

我通过pip安装了virtualenv,在创建新环境后出现了以下错误:

selenium:~ auser$ virtualenv new  
New python executable in new/bin/python  
ERROR: The executable new/bin/python is not functioning  
ERROR: It thinks sys.prefix is u'/System/Library/Frameworks/Python.framework/    Versions/2.6' (should be '/Users/user/new')  
ERROR: virtualenv is not compatible with this system or executable  

在我的环境中:

PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  
PATH=/System/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  

我该如何修复这个问题?

谢谢。


我通过Homebrew安装了Python,并将路径更改为/usr/local/lib,现在复制Python一切正常,谢谢大家 :) - gigimon
15个回答

109

以防有人仍在寻找答案。

今天我遇到了同样的问题,并且意识到既然我已经安装了Anaconda,我不应该使用pip install virtualenv来安装虚拟环境,因为这会在后来尝试启动虚拟环境时给我错误消息。相反,我尝试使用 conda install virtualenv,然后输入virtualenv env_mysite问题就解决了。


6

正如@RyanWilcox提到的那样,你可能无意中将virtualenv指向了错误的Python安装位置。Virtualenv带有一个-p标志,让你可以指定要使用哪个解释器。

在我的情况下,

virtualenv test_env

我遇到了和你一样的错误,

virtualenv -p python test_env

运行完美。

如果您调用virtualenv -h,则有关-p标志的文档将告诉您它认为应该使用哪个Python;如果看起来不对劲,请尝试传递-p python。 供参考,我使用的是virtualenv 1.11.6。


5
如果未来有人遇到这个问题-这是由于您的默认Python发行版为conda引起的。Conda有自己的虚拟环境设置过程,但如果您有Python的conda分发版,并且仍然希望在此处使用virtualenv,则可以按照以下步骤操作:
  1. 找到您机器上的其他Python发行版:ls -ls /usr/bin/python*

  2. 注意不是conda的可用Python版本,并运行下面的代码(请注意,对于Python 3及以上版本,您必须先升级virtualenv):virtualenv -p python2.7(或您的Python版本)flaskapp


4

我也遇到了这个问题。我在 README 中写下了以下指令:

我发现有两件事是有效的:

  1. 确保你正在运行最新的虚拟环境 (此篇文章撰写时是1.5.1)
  2. 如果你使用非系统 Python 作为标准 Python (检查 python 版本),强制使用系统提供的版本。

    不要使用 virtualenv thing,而是使用 /usr/bin/python2.6 PATH/TO/VIRTUALENV thing(或者使用 which python 返回给你的任何内容 - 当我遇到这个问题时,我的做法就是这样)


不理解,什么是bootstrap.py?我使用的是系统Python: 哪一个Python呢? /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python - gigimon
这解决了我的问题:只需要一个更新的virtualenv。 - Matthew Schinckel

3
我曾经遇到过同样的问题,现在看来是由于Python安装混乱所致。我已经使用不同的来源(官方二进制文件、Homebrew、官方二进制文件+手工调整,如此处所述)多次安装和重新安装Python,自从购买新笔记本电脑以来,我的OS X已经安装了一年以上。别问我为什么这样做,我只是一个可怜的新手,相信一切都会在重新安装后自行解决。
因此,我在这里安装了许多不同的Python,并且有许多硬链接指向它们,但不一致。最终,我厌倦了它们所有的东西,小心地用find实用程序从系统中清除了我找到的所有Python。此外,我取消了指向任何Python的所有链接。然后,我使用Homebrew安装了一个新的Python,安装了virtualenv,现在一切正常。
因此,我的建议是: sudo find / -iname "python*" > python.log 然后分析这个文件,删除和取消链接与您需要的Python版本相关的所有内容,重新安装它(我使用Homebrew完成,也许官方安装也可以),然后享受。确保您从/usr/bin/usr/local/bin取消链接所有与Python相关的内容,并在/Library/System/Library中删除所有Frameworks/Python.framework/Versions/<Your.Version>的实例。
这可能是一种肮脏的方法,但对我有效。除了pipvirtualenv之外,我不喜欢保留任何系统范围的Python库,并为我的所有项目创建虚拟环境,因此我不关心删除重要库。如果您不想删除所有内容,请仍然尝试了解您的Python版本、指向它们的链接以及来源。然后考虑可能导致问题的原因并进行修复。

1

我曾经遇到过同样的问题,我可以确认问题出在一个过时的virtualenv.py文件上。

不需要进行整个install --upgrade

只需用最新版本的virtualenv.py文件替换即可。


1
我遇到了同样的问题,发现是由于没有正确指定Python可执行文件名称导致的。例如,对于Python 2.x:

virtualenv --system-site-packages -p python mysite

但是对于Python 3.6,您需要像python3.6这样指定可执行文件名称:

virtualenv --system-site-packages -p python3.6 mysite


1
我遇到了一个变体的“不起作用”错误。 我试图在一个包含路径“.../编程/开发…”的文件夹中创建一个环境,实际上是“/用户/埃里克/文档/编程:开发/”。 并且出现了以下错误:
ImportError: No module named site
ERROR: The executable env/bin/python2.7 is not functioning
ERROR: It thinks sys.prefix is u'/Users/eric/Documents/Programming:Developing/heroku' (should be u'/Users/eric/Documents/Programming:Developing/heroku/env')
ERROR: virtualenv is not compatible with this system or executable

我在另一个文件夹中尝试了相同的操作,一切正常,没有出现错误,env/bin 中也有我所期望的内容(activate等)。


我遇到了同样的错误。你找到解决方案了吗? - KartikKannapur
我也刚遇到了这个错误!似乎没有解决方案。我正在使用Anaconda,你们是在使用系统Python还是Anaconda? - user2918461

0
我按照以下步骤使virtualenv工作:
更新virtualenv如下:
==> sudo pip install --upgrade virtualenv

初始化 Python3 虚拟环境:

==> virtualenv -p python3 venv

0

我也遇到了这个问题,我尝试了以下方法,对我有效:

conda install virtualenv

virtualenv --system-site-packages /anaconda/envs/tensorflow (这里的envs是用户创建的所有虚拟环境的存放位置)

source /anaconda/envs/tensorflow/bin/activate

希望这对你有所帮助。


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