pip安装中“ X的建筑车轮失败”是什么意思?

not*_*bit 41 python pip python-3.x python-wheel

在SO上,这是一个真正流行的问题,但是我看过的所有答案中,没有一个能清楚地说明此错误的真正含义以及发生的原因。

造成混淆的一个原因是,当您(例如)这样做时pip install pycparser,您首先会得到以下错误:

Failed building wheel for pycparser

然后出现以下消息,说明该软件包是:

Successfully installed pycparser-2.19


# pip3 install pycparser

Collecting pycparser
  Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
Building wheels for collected packages: pycparser
  Running setup.py bdist_wheel for pycparser ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-g_v28hpp/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-__w_f6p0 --python-tag cp36:
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    ...
    File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2349, in resolve
      module = __import__(self.module_name, fromlist=['__name__'], level=0)
  ModuleNotFoundError: No module named 'wheel.bdist_wheel'

  ----------------------------------------
  Failed building wheel for pycparser
  Running setup.py clean for pycparser
Failed to build pycparser
Installing collected packages: pycparser
  Running setup.py install for pycparser ... done
Successfully installed pycparser-2.19
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?

(我想了解如何发生某些故障但仍然可以安装,以及是否可以信任此软件包正常运行?)

到目前为止,我已经找到了最好的部分原因是这个


BTW /解决方案

上述问题的解决方案是最常见的,以确保禁用缓存使用副本:pip install <package> --no-cache-dir

小智 22

昨天,我遇到了同样的错误: Failed building wheel for hddfancontrol跑步时pip3 install hddfancontrol。结果是Failed to build hddfancontrol。原因是error: invalid command 'bdist_wheel'Running setup.py bdist_wheel for hddfancontrol ... error。通过运行以下命令修复了该错误:

 pip3 install wheel
Run Code Online (Sandbox Code Playgroud)

(从这里开始。)

另外,也可以从此处直接下载“ wheel” 。下载后,可以通过运行以下命令进行安装:

pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
Run Code Online (Sandbox Code Playgroud)

  • 即使安装了轮子后它也不适合我! (7认同)

pra*_*nsg 18

(这里是点子维护者!)

如果包装不是车轮,则pip尝试为其构建一个车轮(通过setup.py bdist_wheel)。如果由于任何原因导致安装失败,您将收到“ pycparser的构建车轮故障”消息,并且pip退回到直接安装(通过setup.py install)。

装好轮子后,pip可以通过正确打开包装来安装轮子。pip尝试尽可能多地通过轮子安装软件包。这是因为使用滚轮具有多种优势(例如安装速度更快,可缓存,不再执行代码等)。


您的错误消息是由于wheel缺少包,其中包含构建轮子所需的逻辑setup.py bdist_wheel。(pip install wheel可以解决该问题。)


以上是当前默认的旧行为;我们会在将来的某个时候默认切换到PEP 517,为此我们将转到基于标准的流程。我们还为此提供了隔离的版本,因此,默认情况下您会在这些环境中安装滚轮。:)

  • 在撰写 OP 时,我已经安装了“wheel”包。另请添加 PEP517 的链接。 (3认同)
  • 现在已经进入 2022 年了,这仍然是一个问题。pip install wheel 做了一些“事情”,但在尝试完成与创建 Python 虚拟环境相关的原始安装时,它们仍然失败。我必须坚持使用基于 Windows 的设置。这绝对是浪费时间。 (3认同)

not*_*bit 12

从那以后,似乎没有人提到我自己。我自己解决上述问题是最常见的,以确保禁用缓存使用副本:pip install <package> --no-cache-dir

  • 这个问题的公认答案如何?它没有回答问题。 (8认同)
  • 如果您的目标只是删除该消息,那么这可能算作修复,否则我将其称为解决方法。 (2认同)
  • 因为他自己也问过,也回答过。我想这样他就能接受我相信的他自己的答案。听起来很奇怪,但情况可能就是这样。 (2认同)

小智 6

就我而言,在创建 venv 后更新 pip 版本,此更新 pip 从 9.0.1 到 20.3.1

python3 -m venv env/python
source env/python/bin/activate
pip3 install pip --upgrade
Run Code Online (Sandbox Code Playgroud)

但是,消息是……

Using legacy 'setup.py install' for django-avatar, since package 'wheel' is not installed.
Run Code Online (Sandbox Code Playgroud)

然后,我在更新 pip 后安装轮包

Using legacy 'setup.py install' for django-avatar, since package 'wheel' is not installed.
Run Code Online (Sandbox Code Playgroud)

消息是……

Building wheel for django-avatar (setup.py): started
default:   Building wheel for django-avatar (setup.py): finished with status 'done'
Run Code Online (Sandbox Code Playgroud)


Ste*_*veJ 5

从包部署的角度解决这个问题可能会有所帮助。

有很多教程解释了如何将包发布到 PyPi。下面是我用过的几个;

中等的
真正的蟒蛇

我的经验是,这些教程中的大多数只让您使用源代码的 .tar,而不是轮子。因此,在安装使用这些教程创建的软件包时,我收到了“无法构建轮子”错误。

后来我在 PyPi 上找到了 Python 软件基金会文档PSF Docs 的链接。我发现他们的设置和构建过程略有不同,并且确实包括构建轮文件。

使用官方记录的方法后,我在安装包时不再收到错误消息。

因此,错误可能只是开发人员如何打包和部署项目的问题。我们中没有人一出生就知道如何使用 PyPi,如果他们遇到错误的教程——好吧,你可以填补空白。

我确信这不是错误的唯一原因,但我敢打赌这是造成错误的主要原因。