我正在将一个Django应用程序部署到开发服务器,并在运行pip install -r requirements.txt
时遇到此错误:
Traceback (most recent call last):
File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
pkg_resources
似乎随setuptools
一起setuptools
。 最初我认为这可能没有安装到virtualenv中的Python,所以我使用以下命令将setuptools 2.6
(与Python相同的版本)安装到virtualenv中的Python站点包:
sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages
编辑:这只发生在virtualenv内。 如果我在virtualenv之外打开一个控制台,那么存在pkg_resources
,但我仍然遇到同样的错误。
关于为什么pkg_resources
不在路径上的任何想法?
#1楼
2018年7月更新
大多数人现在应该使用pip install setuptools
(可能使用sudo
)。
有些人可能需要(重新)通过他们的包管理器安装python-setuptools
包( apt-get install
, yum install
等)。
此问题可能高度依赖于您的操作系统和开发环境。 如果以上内容不适合您,请参阅下面的遗产/其他答案。
说明
此错误消息是由缺少/损坏的Python setuptools
包引起的。 Per Matt M.的注释和setuptools问题#581 , 下面提到的引导脚本不再是推荐的安装方法。
引导脚本说明将保留在下面,以防它对任何人都有帮助。
遗产答案
我在尝试使用pip时遇到了同样的ImportError
。 不知何故,我的Python环境中删除了setuptools
包。
要解决此问题,请运行setuptools
的安装脚本:
wget https://bootstrap.pypa.io/ez_setup.py -O - | python
(或者如果您没有安装wget
(例如OS X),请尝试
curl https://bootstrap.pypa.io/ez_setup.py | python
可能有sudo
前置。)
如果你有任何版本的distribute
版或任何低于0.6的setuptools
,你必须先卸载它。*
有关详细信息,请参阅安装说明
*如果您已经有工作distribute
,将其升级到“兼容包装”,将您切换到setuptools
更容易。 但如果事情已经破裂,不要试试。
#2楼
当我将virtualenv激活为与创建它的人不同的用户时,我遇到了这个问题。 这似乎是一个许可问题。 当我尝试@cwc的答案并在输出中看到这个时,我发现了这个:
Installing easy_install script to /path/env/bin
error: /path/env/bin/easy_install: Permission denied
切换回创建virtualenv的用户,然后运行原始pip install
命令没有问题。 希望这可以帮助!
#3楼
我今天也遇到了这个问题。 我只在虚拟环境中遇到问题。
我的解决方案是停用虚拟环境,删除然后用pip卸载virtualenv并重新安装它。 之后我为我的项目创建了一个新的虚拟环境,然后pip在虚拟环境中和正常环境一样工作正常。
#4楼
它也发生在我身上。 我认为如果在virtualenv使用setuptools时,requirements.txt包含“distribute”条目,则会出现问题。 Pip将尝试修补setuptools以便为分发腾出空间,但不幸的是它会在一半时间内失败。
简单的解决方案是删除当前的virtualenv,然后使用--distribute参数创建一个新的virtualenv。
使用virtualenvwrapper的一个例子:
$ deactivate
$ rmvirtualenv yourenv
$ mkvirtualenv yourenv --distribute
$ workon yourenv
$ pip install -r requirements.txt
#5楼
尝试在ubuntu 13.10上安装rhodecode到virtualenv时,我看到了这个错误。 对我来说,解决方案是运行
pip install --upgrade setuptools
pip install --upgrade distribute
在我运行easy_install rhodecode之前。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162880