返回介绍

ImportError: No module named setuptools

发布于 2021-04-05 05:11:52 字数 3108 浏览 934 评论 0 收藏 0

Although using pip install --upgrade setuptools to upgrade from distribute to setuptools works in isolation, it’s possible to get “ImportError: No module named setuptools” when using pip<1.4 to upgrade a package that depends on setuptools or distribute.

e.g. when running a command like this: pip install –upgrade pyramid

Solution

To prevent the problem in new environments (that aren’t broken yet):

  • Option 1:
  • First run pip install -U setuptools,
  • Then run the command to upgrade your package (e.g. pip install –upgrade pyramid)
  • Option 2:
  • Upgrade pip using get-pip
  • Then run the command to upgrade your package (e.g. pip install –upgrade pyramid)

To fix the problem once it’s occurred, you’ll need to manually install the new setuptools, then rerun the upgrade that failed.

  1. Download ez_setup.py (https://bitbucket.org/pypa/setuptools/downloads/ez_setup.py)
  2. Run python ez_setup.py
  3. Then rerun your upgrade (e.g. pip install –upgrade pyramid)

Cause

distribute-0.7.3 is just an empty wrapper that only serves to require the new setuptools (setuptools>=0.7) so that it will be installed. (If you don’t know yet, the “new setuptools” is a merge of distribute and setuptools back into one project).

distribute-0.7.3 does its job well, when the upgrade is done in isolation. E.g. if you’re currently on distribute-0.6.X, then running pip install -U setuptools works fine to upgrade you to setuptools>=0.7.

The problem occurs when:

  1. you are currently using an older distribute (i.e. 0.6.X)
  2. and you try to use pip to upgrade a package that depends on setuptools or distribute.

As part of the upgrade process, pip builds an install list that ends up including distribute-0.7.3 and setuptools>=0.7 , but they can end up being separated by other dependencies in the list, so what can happen is this:

  1. pip uninstalls the existing distribute
  2. pip installs distribute-0.7.3 (which has no importable setuptools, that pip needs internally to function)
  3. pip moves on to install another dependency (before setuptools>=0.7) and is unable to proceed without the setuptools package

Note that pip v1.4 has fixes to prevent this. distribute-0.7.3 (or setuptools>=0.7) by themselves cannot prevent this kind of problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文