无法在使用brew安装的Python 2.7的OS X 10.8中使用pip安装virtualenv。
无法在使用brew安装的Python 2.7的OS X 10.8中使用pip安装virtualenv。
当尝试使用brew安装python时,我遇到了以下错误:\n
$ pip install virtualenv Requirement already satisfied (use --upgrade to upgrade): \ virtualenv in /Library/Python/2.7/site-packages/virtualenv-1.9.1-py2.7.egg Cleaning up...
\n很明显,pip在某种程度上查看了系统Python文件夹,而不是位于/usr/local的brew安装的Python文件夹。我该如何避免这个问题?\nbrew doctor未发现任何问题,路径优先级设置正确。\n我尝试从系统Python中删除virtualenv包,\n以便可以使用brew安装的pip来安装virtualenv。\n但是,我无法创建虚拟环境,因为我遇到了以下错误:\n
$ virtualenv datatransfer/ Traceback (most recent call last): File "/usr/local/bin/virtualenv", line 5, infrom pkg_resources import load_entry_point File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in working_set.require(__requires__) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 666, in require needed = self.resolve(parse_requirements(requirements)) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve raise DistributionNotFound(req) # XXX put more info here pkg_resources.DistributionNotFound: virtualenv==1.9.1
\n所以我没有成功避免系统的virtualenv。\n我做错了什么?
在我的$HOME目录中存在.pydistutils.cfg是导致问题的真正原因。这就是为什么我被迫使用sudo pip install <package>。
如果你必须使用sudo来通过pip安装包,那么你的操作是错误的,你需要立即开始对系统进行故障排除;否则一切都会失败,你也不会知道原因。
运行brew doctor命令会警告你有关.pydistutils.cfg文件的问题,所以在对系统进行核心更改后,不要忘记监视该命令的状态。
我花了很长时间才找到这个问题,但现在一切都好了。这个链接真的帮了我很大的忙。
出现这个问题的原因是在用户的$HOME目录中存在.pydistutils.cfg文件,解决方法是运行brew doctor命令来检查.pydistutils.cfg文件的问题,并进行相应的调整。
问题的出现原因:在安装了brew版本的Python和virtualenv之后,无法使用pip install virtualenv命令进行安装。
解决方法:
1. 卸载brew版本的Python和virtualenv:
brew uninstall python
brew uninstall pyenv-virtualenv
2. 将/usr/local/bin目录下找到的所有virtualenv*文件移动到另一个文件夹中:
sudo mkdir /usr/local/bin/venv-old
sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/
3. 打开一个新的终端窗口,确认当前状态干净无残留:
which python # => /usr/bin/python
which virtualenv # => virtualenv not found
4. 使用推荐的方法干净地安装Python和virtualenv(wrapper):
brew install python --with-brewed-openssl
# 现在打开一个新的终端窗口(以访问/usr/local/bin/python)
pip install virtualenv
pip install virtualenvwrapper
这是我找到的最可靠的解决方法,无需重新安装任何东西。谢谢!
如果像我一样,在运行pip uninstall virtualenv后,/usr/local/bin/virtualenv仍然存在,似乎可以手动删除/usr/local/bin/virtualenv,然后pip install提供了一个成功运行的virtualenv版本。
是的,这就是为什么我建议将所有的/usr/local/bin/virtualenv*文件移动到一个新的文件夹中。我不喜欢永久删除我的home文件夹之外的任何东西,因为你永远不知道哪个系统实用程序可能会依赖它。