2013-05-31 37 views
9

尝试安装时的virtualenv使用酿造蟒蛇,我得到以下错误:无法在OS X 10.8 PIP安装virtualenv中与熬制的Python 2.7

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

所以很明显点子以某种方式寻找到系统蟒蛇文件夹,而不是/ usr/local中的已冲泡的文件夹。我怎样才能避免这种情况?

酿造医生发现没有问题,路径优先级设置好。

我试图从系统python中删除virtualenv软件包,所以我可以在酿造好的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。

我做错了什么?

+0

看看这个维基页面:https://github.com/mxcl/homebrew/wiki/Homebrew-and-Python。它解释了如何编辑您的PYTHONPATH和PATH,以便您的系统首先找到酿造的python。 – SethMMorton

+0

@SethMMorton PATH已经正确,并且PYTHONPATH为空。我在这个wiki中看到的是,酿造的python还在/Library/Python/2.7/site-packages上查找模块。但是,那么使用该文件夹中的系统命令创建的virtualenvs会使用酿造的python吗? – RogerFC

+0

当你输入'哪个python'和'哪个pip'时会发生什么? – SethMMorton

回答

0

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

这解决了这个问题,这表明我要么得到另一个问题与一般来说,系统配置或者具有不止一小时Python体验的人将能够指出为什么它不好(我认为这与全局安装被认为是不好的做法有关)。

赛斯是在一些与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(I没有一个输出之前的须藤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 
1

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

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

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

我花了相当长的一段时间来追踪这件事,但现在一切都很顺利。 This really helped

19

我有同样的问题,我设法通过卸载Python中的任何BREW版本和virtualenv中

brew uninstall python 
brew uninstall pyenv-virtualenv 

手动移动所有的virtualenv *文件,我发现/usr/local/bin下到另一个文件夹

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 

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

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

这是我找到的最坚实的解决方案,无需“sudo”重新安装任何东西。谢谢! – Geekfish

+0

如果和我的系统一样,即使在运行'pip卸载virtualenv'后,'/ usr/local/bin/virtualenv'仍然存在,似乎可以手动删除'/ usr/local/bin/virtualenv',然后'pip install'提供了一个成功运行的virtualenv版本。 – npdoty

+0

是的,这就是为什么我建议将所有'/ usr/local/bin/virtualenv *'东西移动到一个新文件夹。我不想永久删除我的主文件夹以外的任何东西,因为您永远不知道系统实用程序可能依赖于它。 – metakermit

1

我有同样的问题,发现在谷歌团的溶液。 看来/ 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

+0

这为我工作!事实上,我在那里有一个非常古老的virtualenv脚本,由于某种原因无法卸载。 – gabe

4

我有同样的问题,

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

pip install -I virtualenv

我没有卸载并重新安装蟒蛇。

+0

非常感谢,为我工作! – ademarizu