没有名为 pkg_resources 的模块

新手上路,请多包涵

我正在将 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 许可协议

阅读 1k
2 个回答

2018 年 7 月更新

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

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

此问题可能高度依赖于您的操作系统和开发环境。如果以上内容不适合您,请参阅下面的遗留/其他答案。

解释

此错误消息是由丢失/损坏的 Python setuptools 包引起的。根据 Matt 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 前缀。)

如果您有任何版本的 distribute 或任何 setuptools 低于 0.6,您必须先将其卸载。*

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


\* 如果您已经有一个工作 distribute ,将其升级到“兼容性包装器”,将您切换到 setuptools 会更容易。但是,如果事情已经坏了,请不要尝试。

原文由 cwc 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 Marek 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题