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)
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,为此我们将转到基于标准的流程。我们还为此提供了隔离的版本,因此,默认情况下您会在这些环境中安装滚轮。:)
not*_*bit 12
从那以后,似乎没有人提到我自己。我自己解决上述问题是最常见的,以确保禁用缓存使用副本:pip install <package> --no-cache-dir
。
小智 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)
从包部署的角度解决这个问题可能会有所帮助。
有很多教程解释了如何将包发布到 PyPi。下面是我用过的几个;
我的经验是,这些教程中的大多数只让您使用源代码的 .tar,而不是轮子。因此,在安装使用这些教程创建的软件包时,我收到了“无法构建轮子”错误。
后来我在 PyPi 上找到了 Python 软件基金会文档PSF Docs 的链接。我发现他们的设置和构建过程略有不同,并且确实包括构建轮文件。
使用官方记录的方法后,我在安装包时不再收到错误消息。
因此,错误可能只是开发人员如何打包和部署项目的问题。我们中没有人一出生就知道如何使用 PyPi,如果他们遇到错误的教程——好吧,你可以填补空白。
我确信这不是错误的唯一原因,但我敢打赌这是造成错误的主要原因。