9

尝试使用 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医生没发现问题,路径优先级设置ok。

我试图从系统 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。

我做错了什么?

4

5 回答 5

19

我遇到了同样的问题,我设法通过卸载任何 brew 版本的 Python 和 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(wrapper ):

brew install python --with-brewed-openssl
# Open a new terminal tab now (to access /usr/local/bin/python)
pip install virtualenv
pip install virtualenvwrapper
于 2013-11-03T17:42:31.070 回答
4

我遇到过同样的问题,

为了我

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

pip install -I virtualenv

我不必卸载并重新安装 python。

于 2014-11-14T11:41:21.807 回答
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

于 2014-07-19T11:24:20.100 回答
1

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

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

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

我花了很长时间才找到这个,但现在一切都很好。这真的有帮助

于 2013-07-07T07:03:47.343 回答
0

根据 brew doctor 的说法,我发现与您不同,我的路径是错误的。但是在纠正我仍然遇到问题之后(根据您的描述,这并不奇怪)所以我卸载了 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(在安装 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
于 2013-06-19T02:02:56.470 回答