当尝试使用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。
我做错了什么?
答案 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
使用推荐的方法(here和here)干净地安装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