我正在将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一起分发。最初我认为这可能不会安装到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不在路径上有任何想法吗?


当前回答

我今天也遇到了这个问题。我只在虚拟环境中遇到了问题。

我的解决方案是停用虚拟env,删除并使用pip卸载virtualenv,然后重新安装它。之后,我为我的项目创建了一个新的虚拟环境,然后pip在虚拟环境中工作得很好,就像在正常环境中一样。

其他回答

没有一个张贴的答案对我有用,所以我重新安装pip,它工作了!

sudo apt-get install python-setuptools python-dev build-essential 

sudo easy_install pip 

pip install --upgrade setuptools

(参考:http://www.saltycrane.com/blog/2010/02/how-install-pip-ubuntu/)

我之前有这个错误,最高评级的答案给了我一个错误,试图下载ez_setup.py文件。我找到了另一个来源,所以你可以运行命令:

curl http://peak.telecommunity.com/dist/ez_setup.py | python

我发现我还必须使用sudo来让它工作,所以你可能需要运行:

sudo curl http://peak.telecommunity.com/dist/ez_setup.py | sudo python

我还创建了另一个可以下载脚本的位置:

https://gist.github.com/ajtrichards/42e73562a89edb1039f3

很多答案都推荐以下方法,但是如果你通读了脚本的源代码,你就会发现它已经被弃用了。

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

如果你的pip也坏了,这也没用。

pip install setuptools

我发现我必须运行确保pip、setuptools和wheel是最新的命令,以使pip重新工作。

python -m pip install --upgrade pip setuptools wheel

在Opensuse 42.1中,以下修复了此问题:

zypper in python-Pygments

2018年7月更新

大多数人现在应该使用pip install setuptools(可能与sudo一起使用)。

有些人可能需要通过他们的包管理器(apt-get install, yum install等)(重新)安装python-setuptools包。

此问题可能高度依赖于您的操作系统和开发环境。如果上面的方法对你不起作用,请参阅下面的遗产/其他答案。

解释

此错误消息是由Python setuptools包丢失/损坏引起的。马特·M。的注释和setuptools issue #581,下面提到的引导脚本不再是推荐的安装方法。

引导脚本说明将保留在下面,以防它对任何人都有帮助。

遗留的答案

我今天在尝试使用pip时遇到了同样的ImportError。不知何故,setuptools包在我的Python环境中被删除了。

要解决这个问题,请运行setuptools的安装脚本:

wget https://bootstrap.pypa.io/ez_setup.py -O - | python

(或者如果你没有安装wget(例如OS X),试试

curl https://bootstrap.pypa.io/ez_setup.py | python

可能会加上sudo。)

如果你有任何版本的分发,或任何setuptools低于0.6,你必须先卸载它

有关详细信息,请参阅安装说明。


*如果你已经有一个工作的发行版,升级到“兼容性包装”,切换到setuptools更容易。但如果事情已经坏了,就不要再尝试了。