我已经通过virtualenv
安装了pip
并在创建新环境后出现此错误:
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
我该如何修复?
感谢。
答案 0 :(得分:109)
以防有人仍在寻找答案。
我今天遇到了同样的问题并且意识到因为我已经安装了Anaconda,所以我不应该使用pip install virtualenv
来安装虚拟环境,因为这会在稍后尝试启动时给出错误消息。相反,我尝试conda install virtualenv
然后输入virtualenv env_mysite
并解决了问题。
答案 1 :(得分:6)
如果将来有人遇到此问题 - 这是由您的默认Python发行版为conda引起的。 Conda拥有它自己的虚拟环境set up process但是如果你有python的conda发行版并且仍然希望在这里使用virtualenv的方法:
在您的计算机上查找其他python发行版:ls -ls /usr/bin/python*
注意不是conda的availble python版本并运行下面的代码(注意python 3及以上版本,你必须首先升级virtualenv):virtualenv -p python2.7(or your python version) flaskapp
答案 2 :(得分:5)
与@RyanWilcox提到的一样,您可能无意中将virtualenv
指向了错误的Python安装。 Virtualenv带有-p
标志,可让您指定要使用的解释器。
就我而言,
virtualenv test_env
与你的错误一样,而
virtualenv -p python test_env
工作得很好。
如果你调用virtualenv -h
,-p
标志的文档将告诉你它认为应该使用哪个python;如果它看起来很难看,请尝试传递-p python
。作为参考,我正在使用virtualenv 1.11.6。
答案 3 :(得分:4)
我自己遇到过这个问题。我在自述文件中写下了说明书,我在下面贴了....
我发现有两件事可行:
如果您使用非系统Python作为标准Python(要检查的python)强制使用系统提供的。
而不是virtualenv thing
使用/usr/bin/python2.6 PATH/TO/VIRTUALENV thing
(或任何which
python
返回给您 - 这是我在遇到此问题时为我所做的事情)
答案 4 :(得分:3)
我遇到了同样的问题,正如我现在看到的那样,它是由凌乱的Python安装引起的。自从我购买了一台新笔记本电脑以来,我安装了OS X已经超过一年了,我已经使用不同来源安装并重新安装了Python几次(官方二进制文件,自制软件,官方二进制文件+手工调整,如here所述) 。不要问我为什么这样做,我只是一个悲惨的新手,相信重新安装后一切都会自行解决。
所以,我在这里和那里安装了许多不同的Pythons以及许多指向它们的硬链接不一致。最终我厌倦了所有这些并且重新安装OS X 从我使用find
实用程序找到的所有Pythons中仔细清理了系统。此外,我已取消链接所有指向任何地方的Python的链接。然后我用自制软件安装了一个新的Python,安装了virtualenv,现在一切都充当了魅力。
所以,我的食谱是:
sudo find / -iname "python*" > python.log
然后分析这个文件,删除和取消与你需要的Python版本相关的所有内容,重新安装它(我用自制软件做,也许正式安装也可以)并享受。确保取消与/usr/bin
和/usr/local/bin
相关的所有与python相关的内容,并删除Frameworks/Python.framework/Versions/<Your.Version>
和/Library
中/System/Library
的所有实例。
这可能是一个肮脏的黑客,但它对我有用。我不想保留除pip
和virtualenv
之外的任何系统范围的Python库,并为我的所有项目创建虚拟环境,所以我不关心删除重要的库。如果你不想删除所有内容,仍然要尝试了解你的蟒蛇是否是什么,链接指向它们以及从何处指向它们。然后想想可能导致问题的原因并解决它。
答案 5 :(得分:1)
我遇到了这个“无法正常运行”错误的变体。 我试图在包含路径“... / Programming / Developing ...”的文件夹中创建一个环境,这实际上是“/ 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 / bin具有我的预期(激活等)。
答案 6 :(得分:1)
以上解决方案对我来说失败了,但以下工作:
python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate
这很hacky,但是,核心问题确实似乎只是pip。
答案 7 :(得分:1)
我遇到了同样的问题,我发现当你没有正确指定python可执行文件名时会发生这种情况。所以对于python 2x,例如:
virtualenv --system-site-packages -p python mysite
但对于python 3.6,您需要指定可执行文件名,如python3.6
virtualenv --system-site-packages -p python3.6 mysite
答案 8 :(得分:0)
如果您仍然遇到virtualenv
问题,可以尝试使用pythonbrew。它是同一问题的替代解决方案。它更像Ruby rvm:它在$HOME/.pythonbrew
下构建并创建一个完整的Python实例,然后设置一些bash函数,允许您在版本之间轻松切换。其中virtualenv
影响Python的系统版本,使用符号链接作为其解决方案的一部分,pythonbrew
构建完全自包含的Python安装。
我使用virtualenv
多年了。这是一个不错的解决方案,但我最近已切换到pythonbrew
。拥有完全独立的Python实例意味着安装新实例需要一段时间(因为pythonbrew
实际上是从头开始编译Python),但每个安装的自包含特性都吸引我。磁盘很便宜。
答案 9 :(得分:0)
在OSX 10.6.8 leopard
上,在&#34;升级后#34;对Lion,然后又降级(哎呀 - 避免!),几个月前我通过了Wolf Paulus方法,完全不知道python。完全删除python 2.7
并更换&#34;&#34;它与3.something
。我的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,编译器,你可以得到here。
所以我刚安装了python.org的最新下载。
然后不得不重新安装easy_install,pip,virtualenv。
绝对不知道什么时候需要一台新的笔记本电脑,但是购买更少的硬件(奴隶劳工,不道德的采矿等)还有很多话要说。
答案 10 :(得分:0)
我做了以下步骤让virtualenv工作:
按如下方式更新virtualenv:
==> sudo pip install --upgrade virtualenv
初始化python3 virtualenv:
==> virtualenv -p python3 venv
答案 11 :(得分:0)
打开终端并输入/Library/Frameworks/Python.framework/Versions/
然后在使用Python2(或其他任何其他)时键入ls /Library/Frameworks/Python.framework/Versions/2.7/bin/
。
编辑〜/ .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 命令应该可以工作。
答案 12 :(得分:0)
我遇到了同样的问题,我可以确认问题出在过时的virtualenv.py
文件中。
没有必要进行整个安装 - 升级。
使用最新版本替换virtualenv.py
文件已足够。
答案 13 :(得分:0)
我也有这个问题,我尝试了以下适用于我的方法:
conda install virtualenv
virtualenv --system-site-packages /anaconda/envs/tensorflow
(此处envs
保留用户制作的所有虚拟环境)
source /anaconda/envs/tensorflow/bin/activate
希望它有用。