我正在将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不在路径上有任何想法吗?


当前回答

sudo apt-get install --reinstall python-pkg-resources

在Debian中为我修复了它。似乎卸载一些.deb包(在我的情况下是扭曲的)破坏了python用来查找包的路径

其他回答

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

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

在尝试了几个这样的答案后,然后联系了一位同事,在Ubuntu 16.04上对我有效的是:

pip install --force-reinstall -U setuptools
pip install --force-reinstall -U pip

在我的情况下,只有旧版本的枕头3.1.1有问题(枕头4。X工作正常),现在解决了!

如果您使用的是Python 3,则应该使用pip3而不是pip。该命令类似于$ pip3 install requirements.txt

简单的解决方法是使用conda来升级setuptools或整个环境。(windows用户专用)

conda upgrade -c anaconda setuptools

如果setuptools被移除,需要重新安装setuptools。

conda install -c anaconda setuptools

如果这些方法都不起作用,您可以升级conda环境。但我不建议你重新安装和卸载一些包,因为这将加剧情况。

当我试图遵循OSX指南时,我偶然发现了这个答案。对我有用的是,在运行python get-pip之后,我还必须easy_install pip。这解决了根本无法运行pip的问题。我确实安装了一堆旧的macport软件。这可能有些矛盾。