与Mac OS X中的virtualenv问题
我已经通过pip
安装了virtualenv
,并在创build新环境后得到这个错误:
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
我该如何修复?
谢谢。
如果你仍然遇到virtualenv
,你可以试试pythonbrew 。 这是同样问题的替代解决scheme。 它更像Ruby的rvm :它在$HOME/.pythonbrew
下构build和创build一个完整的Python实例,然后设置一些bash函数,允许您在各个版本之间轻松切换。 凡virtualenv
阴影系统版本的Python,使用符号链接作为其解决scheme的一部分, pythonbrew
构build完全独立的Python安装。
我使用了virtualenv
多年。 这是一个体面的解决scheme,但我最近切换到pythonbrew
。 拥有完全自包含的Python实例意味着安装一个新实例需要一段时间(因为pythonbrew
实际上是从头开始编译Python的),但是每个安装的自包含性质吸引了我。 而且磁盘很便宜。
以防万一有人在寻找答案。
我刚才遇到了同样的问题,并且意识到自从我已经安装了Anaconda以后,我不应该使用pip install virtualenv
来安装虚拟环境,因为这会在稍后尝试启动时给我错误消息。 相反,我尝试conda install virtualenv
然后进入virtualenv env_mysite
和问题解决。
如果将来有人遇到这个问题 – 这是由于你的默认Python分发版本是conda造成的。 Conda有它自己的虚拟env 设置过程,但是如果你有conda发行python并且仍然希望使用virtualenv,那么这里是:
-
在您的机器上查找其他python发行版:
ls -ls /usr/bin/python*
-
注意可用的Python版本不是conda并运行下面的代码(注意python 3和以上,你必须先升级virtualenv):
virtualenv -p python2.7(or your python version) flaskapp
我自己已经遇到了这个问题。 我在自述文件中写下了说明,我已经在下面粘贴了….
我发现有两件事情可以工作:
- 确保你正在运行最新的virtualenv(本文1.5.1)
-
如果你使用一个非系统的Python作为你的标准Python(用python来检查)强制使用System提供的一个。
而不是使用
virtualenv thing
使用/usr/bin/python2.6 PATH/TO/VIRTUALENV thing
(或者任何which python
返回给你的东西 – 这就是当我遇到这个问题时对我做的)
就像@RyanWilcox提到的,你可能会无意中将virtualenv
指向错误的Python安装。 Virtualenv带有一个-p
标志,让你指定使用哪个解释器。
就我而言,
virtualenv test_env
抛出与你一样的错误,同时
virtualenv -p python test_env
完美的工作。
如果你调用virtualenv -h
, -p
标志的文档会告诉你它认为应该使用哪个python; 如果它看起来不可思议,请尝试传递-p python
。 作为参考,我在virtualenv 1.11.6。
我遇到了同样的问题,就像我现在看到的那样,它是由Python安装造成的。 自从我购买了一台新的笔记本电脑以来,我已经安装了OS X了一年多,而且我已经使用不同的资源(官方二进制文件,自制软件,官方二进制文件和手工调整)安装并重新安装了Python。 不要问我为什么这样做,我只是一个可怜的新手,相信一切都会在重新安装后自行修复。
所以,我在这里和那里安装了许多不同的Pythons以及许多指向它们不一致的硬链接。 最后,我对他们全部感到厌倦, 重新安装了OS X ,使用find
实用工具从所有Pythons中仔细清理了系统。 另外,我没有链接指向任何来自任何地方的Python的所有链接。 然后,我已经安装了一个新的Python使用自制软件,安装了virtualenv,现在一切都起到了魅力。
所以,我的配方是:
sudo find / -iname "python*" > python.log
然后分析这个文件,删除和取消与你需要的Python版本有关的所有东西,重新安装它(我用自制软件做了,也许官方安装也可以)并且享受。 请确保从/usr/bin
和/usr/local/bin
取消所有与python相关的链接,并删除/Library
和/System/Library
的Frameworks/Python.framework/Versions/<Your.Version>
所有实例。
这可能是一个肮脏的黑客,但它为我工作。 我不想保留除pip
和virtualenv
之外的任何系统范围的Python库,并为我的所有项目创build虚拟环境,所以我不在乎删除重要的库。 如果你不想删除所有的东西,还是试着去了解你的python是什么,链接指向他们的什么地方。 然后想想可能会导致问题并解决的问题。
我遇到了这个“不能正常工作”的错误的变化。 我试图在一个文件夹中创build一个环境,其中包括“… / Programming / Developing …”的path,其实际上是“/ Users / eric / Documents / Programming:Developing /”
并得到这个错误:
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 /斌有我所期望的(激活等)。
上述解决scheme失败了,但以下工作:
python3 -m venv --without-pip <ENVIRONMENT_NAME> . <ENVIRONMENT_NAME>/bin/activate curl https://bootstrap.pypa.io/get-pip.py | python deactivate
这是哈克,但是,是的,核心问题真的只是似乎是点子。
在OSX 10.6.8 leopard
,在“升级”到Lion之后,再次降级,几个月前我经历了Wolf Paulus的方法,完全不了解python。 完全删除了python 2.7
并用3.something
“replace”它。 我的FTP程序停止工作(Fetch),谁知道还有什么依赖于Python 2.7。 所以在那个时候,我从python.org下载了最新版本的2.7
,它的安装程序让我启动并运行 – 直到我尝试使用virtualenv
。
这次似乎为我工作的是用这个代码完全删除Python 2.7:
sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7
删除与此代码的所有链接:
sudo rm /usr/bin/pydoc sudo rm /usr/bin/python sudo rm /usr/bin/pythonw sudo rm /usr/bin/python-config
我试图用homebrew
安装python,但显然它不会工作,除非所有的XTools安装,我一直在回避,因为与10.6
兼容的XTools的版本是古老和4GB,大多数我需要的是GCC,编译器,你可以到这里 。
所以我刚安装了python.org的最新下载。
然后不得不重新安装easy_install,pip,virtualenv。
绝对不知道什么时候可以购买新的笔记本电脑,但是要购买更less的硬件(奴隶劳动,不道德的采矿等)还有很多。
我做了以下步骤来获得virtualenv工作:
更新virtualenv如下:
==> sudo pip install --upgrade virtualenv
初始化python3 virtualenv:
==> virtualenv -p python3 venv
打开terminal并input/Library/Frameworks/Python.framework/Versions/
然后inputls /Library/Frameworks/Python.framework/Versions/2.7/bin/
如果你使用的是Python2(或其他)。
编辑〜/ .bash_profile并添加以下行: export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/
cat ~/.bash_profile
在我的情况下,〜/ .bash_profile的内容如下:
export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/
现在virtualenv命令应该工作。
我有同样的问题,我可以确认问题是过时的virtualenv.py
文件。
没有必要做一个完整的安装 – 升级 。
用最新版本replacevirtualenv.py
文件就够了。