最新的'pip'版本出现了"requires setuptools >= 0.8 for dist-info"的错误提示。

83

使用最近的(1.5)版本的pip更新几个软件包时,我遇到了一个错误。例如,sudo pip install -U pytz导致失败并显示以下错误:

Wheel installs require setuptools >= 0.8 for dist-info support.
pip's wheel support requires setuptools >= 0.8 for dist-info support.

我不理解这条消息 (我有setuptools2.1) 或者该如何处理。


这个错误的日志中包含的异常信息:

Exception information:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 230, in run
    finder = self._build_package_finder(options, index_urls, session)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 185, in _build_package_finder
    session=session,
  File "/Library/Python/2.7/site-packages/pip/index.py", line 50, in __init__
    self.use_wheel = use_wheel
  File "/Library/Python/2.7/site-packages/pip/index.py", line 89, in use_wheel
    raise InstallationError("pip's wheel support requires setuptools >= 0.8 for dist-info support.")
InstallationError: pip's wheel support requires setuptools >= 0.8 for dist-info support.
3个回答

148

这对我有用:

sudo pip install setuptools --no-use-wheel --upgrade

请注意sudo的用法。

更新

在Windows上,您只需要以管理员身份执行pip install setuptools --no-use-wheel --upgrade。在Unix / Linux中,sudo命令用于提升权限。

更新2

这似乎已在1.5.1中修复。


我现在不得不回退到使用pip 1.4,稍后会寻找解决方法。 - Rolandf
对我来说起作用了。不知道为什么会发生这种情况。 - amoe
4
请注意,添加的--no-use-wheel选项只是跳过使用'wheel archives',但除此之外,其执行的安装与省略该选项的命令完全相同。 - orome
1
在Centos 6上对我有用。谈论一个抽象的错误信息。 - fred
是的!我之所以问这个问题,是因为在Windows中没有sudo命令,而我不知道它只是用来提升权限的。 - IsmailS
显示剩余5条评论

11

首先,您绝不应运行“sudo pip”。

如果可能的话,您应该使用系统包管理器,因为它使用GPG签名以确保您不会运行恶意代码。

否则,请尝试升级setuptools:

easy_install -U setuptools

或者,可以尝试:

pip install --user <somepackage>

当然,这是针对“全局”包的。你最好使用虚拟环境。


6
通常情况下,使用sudo运行pip是不正确的。但是,有时候你确实需要将某些东西安装到系统Python中(比如virtualenv或pip本身),这时使用sudo是适当的。 - Luke Sneeringer
1
@LukeSneeringer: 为什么是“错误的”。我认为如果没有进行一些重大的重新配置,我并没有太多选择。 - orome
1
easy_install -U setuptools 真棒! - madzohan

0
作为调试工作的一部分,我在Windows Python 3.11上遇到了“AssertionError: Multiple .egg-info directories found error: subprocess-exited-with-errors”的问题。这似乎与setuptools有关。
我清理了c:\users\\appdata\local\temp,但错误仍然存在。没有找到任何与“.egg-info”名称匹配的文件/文件夹(虽然有与“egg_info”匹配的文件)。
可能不寻常的事实是,我正在构建的软件包位于F驱动器上,而虚拟环境位于C驱动器上。路径其他方面都很好。
(venv_mfa) PS F:\pj_tpl> python -m pip install --no-cache-dir -v -e . 使用pip 23.1.2从C:\Users\mgua0\venv_mfa\Lib\site-packages\pip (python 3.11)安装 获取文件:///F:/pj_tpl 运行命令pip subprocess以安装构建依赖项 收集setuptools 使用缓存的setuptools-67.8.0-py3-none-any.whl (1.1 MB) 已成功安装setuptools-67.8.0 安装构建依赖项...完成 检查构建后端是否支持build_editable 检查构建后端是否支持build_editable...完成 获取要构建的要求...完成 运行pip subprocess以安装后端依赖项 收集wheel 使用缓存的wheel-0.40.0-py3-none-any.whl (64 kB) 已成功安装wheel-0.40.0 安装后端依赖项...完成 准备可编辑元数据(pyproject.toml) Traceback (most recent call last): File "C:\Users\mgua0\venv_mfa\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in main() File "C:\Users\mgua0\venv_mfa\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mgua0\venv_mfa\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 181, in prepare_metadata_for_build_editable return hook(metadata_directory, config_settings) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mgua0\AppData\Local\Temp\pip-build-env-swirme89\overlay\Lib\site-packages\setuptools\build_meta.py", line 454, in prepare_metadata_for_build_editable return self.prepare_metadata_for_build_wheel( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mgua0\AppData\Local\Temp\pip-build-env-swirme89\overlay\Lib\site-packages\setuptools\build_meta.py", line 382, in prepare_metadata_for_build_wheel self._bubble_up_info_directory(metadata_directory, ".egg-info") File "C:\Users\mgua0\AppData\Local\Temp\pip-build-env-swirme89\overlay\Lib\site-packages\setuptools\build_meta.py", line 353, in _bubble_up_info_directory info_dir = self._find_info_directory(metadata_directory, suffix) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\mgua0\AppData\Local\Temp\pip-build-env-swirme89\overlay\Lib\site-packages\setuptools\build_meta.py", line 364, in _find_info_directory assert len(candidates) == 1, f"Multiple {suffix} directories found" ^^^^^^^^^^^^^^^^^^^^ AssertionError: Multiple .egg-info directories found error: subprocess-exited-with-error × 准备可编辑元数据(pyproject.toml)未成功运行。 │ 退出代码: 1 ╰─> 请参见上文输出。
注意:此错误源自子进程,可能与pip无关。 完整命令:'C:\Users\mgua0\venv_mfa\Scripts\python.exe' 'C:\Users\mgua0\venv_mfa\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py' prepare_metadata_for_build_editable 'C:\Users\mgua0\AppData\Local\Temp\tmpxmnvgja0' 当前工作目录:F:\pj_tpl 准备可编辑元数据(pyproject.toml)...错误 错误:生成包元数据时遇到错误。 ╰─> 请参见上文输出。
注意:这是上述软件包的问题,而不是pip。 提示:请参见上文以获取详细信息。 (venv_mfa) PS F:\pj_tpl>

如果您有新的问题,请通过单击提问按钮来提出。如果它有助于提供上下文,请包含此问题的链接。- 来自审核 - drops

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接