Mac OS X 中的 virtualenv 问题
Posted
技术标签:
【中文标题】Mac OS X 中的 virtualenv 问题【英文标题】:Problem with virtualenv in Mac OS X 【发布时间】:2011-08-19 17:53:55 【问题描述】:我通过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
我该如何修复这个问题?
谢谢。
【问题讨论】:
我正在通过自制软件安装 python 并将路径更改为 /usr/local/lib 复制 python,现在一切正常,谢谢 :) 【参考方案1】:我自己也遇到过这个问题。我在自述文件中写下了说明,并粘贴在下面....
我发现有两件事可行:
-
确保您运行的是最新的 virtualenv(本文为 1.5.1)
如果您使用非系统 Python 作为标准 Python(要检查哪个 Python),请强制使用系统提供的 Python。
使用/usr/bin/python2.6 PATH/TO/VIRTUALENV thing
代替virtualenv thing
(或任何which
python
返回给您的内容 - 这就是我遇到此问题时为我所做的)
【讨论】:
不明白,bootstrap.py是什么?我正在使用系统 Python: which python /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python 这解决了我的问题:只需要更新的 virtualenv。【参考方案2】:如果您仍然无法使用virtualenv
,您可以尝试使用pythonbrew。这是同一问题的替代解决方案。它的工作方式更像 Ruby 的rvm:它在$HOME/.pythonbrew
下构建和创建一个完整的 Python 实例,然后设置一些 bash 函数,让您可以轻松地在版本之间切换。 virtualenv
隐藏 Python 的系统版本,使用符号链接作为其解决方案的一部分,pythonbrew
构建完全独立的 Python 安装。
我多年来一直使用virtualenv
。这是一个不错的解决方案,但我最近切换到pythonbrew
。拥有完全自包含的 Python 实例意味着安装新实例需要一段时间(因为 pythonbrew
实际上是从头开始编译 Python),但每个安装的自包含性质对我很有吸引力。而且磁盘很便宜。
【讨论】:
谢谢,我正在尝试使用 pythonbew,但稍后:) pythonbrew 和 virtualenv 有什么区别?为什么当我使用 pythonbrew 时,我仍然需要使用 virtualenv 来创建隔离环境?我在这里问了一个问题***.com/questions/8256723/… 杰夫,我为您提到的问题添加了答案。见***.com/a/8348440/53495 投了反对票,因为我更喜欢让 virtualenv 工作的解决方案——对我来说,另一个答案是conda install virtualenv
。
python brew
不再处于积极开发中。请查看pyenv
、pipenv
和pipsi
。【参考方案3】:
我遇到了同样的问题,现在我看到它是由 Python 安装混乱引起的。自从我买了一台新笔记本电脑以来,我已经安装了一年多的 OS X,并且我已经使用不同的来源(官方二进制文件、自制程序、官方二进制文件 + 手动调整,如 here 所述)多次安装和重新安装 Python。不要问我为什么这样做,我只是一个可怜的新手,相信重新安装后一切都会自行解决。
所以,我在这里和那里安装了许多不同的 Python,以及许多不一致地指向它们的硬链接。最终我厌倦了所有这些,并重新安装了 OS X 仔细清理了系统中我使用 find
实用程序找到的所有 Python。此外,我已经取消了所有指向任何 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 库,并为我的所有项目创建虚拟环境,因此我不关心删除重要的库。如果您不想删除所有内容,请尝试了解您的 Python 是否存在,哪些链接指向它们以及从何处指向它们。然后想想可能导致问题的原因并解决它。
【讨论】:
【参考方案4】:在OSX 10.6.8 leopard
上,在“升级”到Lion,然后再次降级(哎呀-避免!),几个月前我经历了Wolf Paulus 方法,完全不了解python。完全删除了python 2.7
,并用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。
肯定想知道什么时候可以购买新笔记本电脑,但购买更少的硬件有很多话要说(奴隶劳动、不道德的采矿等)。
【讨论】:
【参考方案5】:就像@RyanWilcox 提到的那样,您可能无意中将virtualenv
指向了错误的Python 安装。 Virtualenv 带有一个 -p
标志,让您指定要使用的解释器。
就我而言,
virtualenv test_env
抛出了和你一样的错误,而
virtualenv -p python test_env
完美运行。
如果您调用virtualenv -h
,-p
标志的文档将告诉您它认为应该使用哪个 python;如果它看起来很奇怪,请尝试传递-p python
。作为参考,我使用的是 virtualenv 1.11.6。
【讨论】:
【参考方案6】:我遇到了这个“不起作用”错误的变体。 我试图在包含路径“.../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 符合我的预期(激活等)。
【讨论】:
我遇到了同样的错误。你找到解决办法了吗? 我也遇到了这个错误!好像没有解决办法。我用的是anaconda,你们用的是系统python还是anaconda?【参考方案7】:上述解决方案对我来说失败了,但以下解决方案有效:
python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate
这很 hacky,但是是的,核心问题似乎确实只是 pip。
【讨论】:
【参考方案8】:万一以后有人遇到这个问题 - 这是由您的默认 Python 发行版是 conda 引起的。 Conda 有它自己的虚拟环境 set up process 但是如果你有 python 的 conda 发行版并且仍然希望使用 virtualenv,方法如下:
在您的机器上查找其他 python 发行版:ls -ls /usr/bin/python*
记下不是 conda 的可用 python 版本并运行以下代码(注意对于 python 3 及更高版本,您必须先升级 virtualenv):virtualenv -p python2.7(or your python version) flaskapp
【讨论】:
【参考方案9】:我做了以下步骤来让 virtualenv 工作:
如下更新virtualenv:
==> sudo pip install --upgrade virtualenv
初始化python3 virtualenv:
==> virtualenv -p python3 venv
【讨论】:
【参考方案10】:以防万一还有人在寻找答案。
我今天遇到了同样的问题并意识到因为我已经安装了 Anaconda,我不应该使用 pip install virtualenv
来安装虚拟环境,因为这会在稍后尝试启动它时给我错误消息。相反,我尝试了conda install virtualenv
,然后输入virtualenv env_mysite
,问题就解决了。
【讨论】:
我也已经安装了 anaconda。我从 pip 卸载并使用 conda 安装: pip uninstall virtualenv -- conda install virtualenv -- virtualenv my_project 工作就像一个魅力。谢谢你,好心的先生! 拯救了我的一天。谢谢你浪费时间909 很高兴我向下滚动 :)【参考方案11】:打开终端并输入/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】:我遇到了同样的问题,我可以确认问题出在过时的 virtualenv.py
文件上。
没有必要进行整个install --upgrade。
用最新版本替换virtualenv.py
文件就足够了。
【讨论】:
【参考方案13】:我也遇到了这个问题,我尝试了以下对我有用的方法:
conda install virtualenv
virtualenv --system-site-packages /anaconda/envs/tensorflow
(这里envs
保留了用户创建的所有虚拟环境)
source /anaconda/envs/tensorflow/bin/activate
希望对你有帮助。
【讨论】:
【参考方案14】:我遇到了同样的问题,我发现当您没有正确指定 python 可执行文件名称时会发生这种情况。所以以python 2x为例:
virtualenv --system-site-packages -p python mysite
但对于 python 3.6,您需要指定可执行文件名称,例如 python3.6
virtualenv --system-site-packages -p python3.6 mysite
【讨论】:
以上是关于Mac OS X 中的 virtualenv 问题的主要内容,如果未能解决你的问题,请参考以下文章
Mac OS X中virtualenv里python shell无法使用光标键问题的解决
Mac OS X中virtualenv里python shell无法使用光标键问题的解决
Mac OS 基于 VirtualEnv 的安装 tensorflow
Mac OS 中使用virtualenv解决python冲突