我正在将 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
不在路径上的任何想法?
原文由 igniteflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
2018 年 7 月更新
大多数人现在应该使用
pip install setuptools
(可能使用sudo
)。有些人可能需要(重新)安装
python-setuptools
包通过他们的包管理器(apt-get install
,yum install
等)。此问题可能高度依赖于您的操作系统和开发环境。如果以上内容不适合您,请参阅下面的遗留/其他答案。
解释
此错误消息是由丢失/损坏的 Python
setuptools
包引起的。根据 Matt M. 的评论和 setuptools issue #581 ,下面提到的引导脚本不再是推荐的安装方法。引导脚本说明将保留在下方,以防它对任何人仍然有帮助。
遗留答案
我今天在尝试使用 pip 时遇到了相同的
ImportError
。不知何故setuptools
包在我的 Python 环境中被删除了。要解决此问题,请运行
setuptools
的安装脚本:(或者,如果您没有安装
wget
(例如 OS X),请尝试可能带有
sudo
前缀。)如果您有任何版本的
distribute
或任何setuptools
低于 0.6,您必须先将其卸载。*有关详细信息,请参阅 安装说明。
\* 如果您已经有一个工作
distribute
,将其升级到“兼容性包装器”,将您切换到setuptools
会更容易。但是,如果事情已经坏了,请不要尝试。