使用brewed python 2.7无法在OS X 10.8中安装virtualenv

时间:2013-05-31 15:36:02

标签: python macos virtualenv homebrew

当尝试使用brewed python安装virtualenv时,我收到以下错误:

$ 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...

所以很明显pip以某种方式查看系统python文件夹而不是/ usr / local中的brewed文件夹。我怎么能避免这个?

brew医生没有发现问题,路径优先级设置正常。

我试图从系统python中删除virtualenv包, 所以我可以用brewed pip安装virtualenv。 但后来我无法创建virtualenvs,因为我收到了这个错误:

$ virtualenv datatransfer/
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2603, in <module>
    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

所以我没有设法避免使用系统virtualenv。

我做错了什么?

5 个答案:

答案 0 :(得分:19)

我遇到了同样的问题,我设法通过卸载任何brew版本的Python和virtualenv来解决它

brew uninstall python
brew uninstall pyenv-virtualenv

将我在/usr/local/bin下找到的所有virtualenv *文件手动移动到另一个文件夹

sudo mkdir /usr/local/bin/venv-old
sudo mv /usr/local/bin/virtualenv* /usr/local/bin/venv-old/

打开一个新的终端选项卡并仔细检查我是否处于干净状态

which python # => /usr/bin/python
which virtualenv # => virtualenv not found

使用推荐的方法(herehere)干净地安装Python和virtualenv(包装器):

brew install python --with-brewed-openssl
# Open a new terminal tab now (to access /usr/local/bin/python)
pip install virtualenv
pip install virtualenvwrapper

答案 1 :(得分:4)

我有同样的问题,

对我来说

  

sudo mv / usr / local / bin / virtualenv * / usr / local / bin / venv-old /

  

pip install -I virtualenv

我没有必要卸载并重新安装python。

答案 2 :(得分:1)

对我来说真正的原因和问题是我的.pydistutils.cfg目录中存在$HOME。这就是迫使我不得不使用的原因:sudo pip install <package>

如果您必须使用sudo通过pip安装软件包,那么您做错了,您需要立即开始对系统进行故障排除;否则一切都会失败,你不会知道为什么。

正在运行:brew doctor会警告您.pydistutils.cfg文件,因此在对系统进行核心更改后,请不要忘记监控该命令的状态。

我花了很长时间来追踪这一点,但现在一切都很顺利。 This really helped

答案 3 :(得分:1)

我遇到了同样的问题,并在Google网上找到了解决方案。 似乎/ usr / local / bin / virtualenv没有更新,所以如果你打开它,当你的系统上安装了更新版本时,你会看到对旧virtualenv 1.9.1的引用。

所以你只需要打开/ usr / local / bin / virtualenv并将其替换为:

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from virtualenv import main

if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())

这对我有用!

来源:https://groups.google.com/forum/#!topic/python-virtualenv/hL_QDPJsnuY

答案 4 :(得分:0)

我发现,与你不同,根据酿酒医生,我的路径是错误的。但在纠正之后我仍然遇到了问题(给出了你的描述没有惊喜)所以我卸载了virtualenv然后重新安装但是这次使用了sudo,sudo pip install virtualenv

这解决了这个问题,这表明我要么在系统配置方面遇到另一个问题,要么就是那些拥有超过一小时Python经验的人将能够指出为什么它不好(我认为这是与全球安装有关的被认为是一种不良做法。)

Seth正在使用which的东西,看起来你和我一样,

~ which python会产生/usr/local/bin/python

~ ls -l /usr/local/bin/python给了我_permissions_etc_ /usr/local/bin/python -> ../Cellar/python/2.7.5/bin/python

which pip指向/usr/local/bin/pip

ls -l /usr/local/bin/pip显示_permissions_etc_ /usr/local/bin/pip -> ../Cellar/python/2.7.5/bin/pip

Virtualenv(我在sudo pip安装之前没有输出)

which virtualenv/usr/local/bin/virtualenv

ls -l /usr/local/bin/virtualenv显示_permissions_etc_ /usr/local/bin/virtualenv

当我创建并使用virtualenv时,我得到以下内容,

workon ve_test
which python
/Users/_username_/.virtualenvs/ve_test/bin/python
(ve_test)➜  ~PIP_VIRTUALENV_BASE  python --version
Python 2.7.5

FWIW我的.zshrc有以下内容,

# Python related
# http://hackercodex.com/guide/python-virtualenv-on-mac-osx-mountain-lion-10.8/
# http://docs.python-guide.org/en/latest/dev/virtualenvs.html
source /usr/local/bin/virtualenvwrapper.sh
# virtualenv should use Distribute instead of legacy setuptools
export VIRTUALENV_DISTRIBUTE=true
# Centralized location for new virtual environments
export PIP_VIRTUALENV_BASE=$HOME/Projects/PythonVirtualEnv
# cache pip-installed packages to avoid re-downloading
export PIP_DOWNLOAD_CACHE=$HOME/.pip/cache