这是一个非常受欢迎的问题,但我所看到的许多答案中,没有一个能清楚地解释这个错误的真正含义,以及它为什么会发生。
混淆的一个来源是,当(例如)你执行pip install pycparser时,你首先得到错误:
pycparser构建转轮失败
后面跟着一个消息,这个包是:
成功安装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
这是怎么回事?
(我想了解一些东西是如何失败的,但仍然可以安装,以及您是否可以相信这个包正常运行?)
到目前为止,我找到的最好的部分解释是这样的。
从包部署的角度解决这个问题可能会有所帮助。
有很多教程解释了如何将包发布到PyPi。下面是我用过的几个;
媒介
真正的python
我的经验是,大多数这些教程只让你使用源代码的.tar,而不是轮子。因此,在安装使用这些教程创建的包时,我收到了“构建轮子失败”错误。
后来我在PyPi上找到了Python软件基金会文档PSF文档的链接。我发现他们的设置和构建过程略有不同,确实包括构建一个轮子文件。
在使用官方文档的方法后,我在安装包时不再收到错误。
因此,错误可能只是开发人员如何打包和部署项目的问题。我们生来就不知道如何使用PyPi,如果他们碰巧看到了错误的教程——好吧,您可以自己填补空白。
我敢肯定这不是造成错误的唯一原因,但我敢打赌这是一个主要原因。
(pip维护者在这里!)
快速复制粘贴:
pip install wheel
在用venv创建的每个新虚拟环境中都这样做。
继续阅读,了解细节和解释。
如果包不是一个轮子,pip会试着为它构建一个轮子(通过setup.py bdist_wheel)。如果因为任何原因失败了(比如,缺少系统级库,与系统不兼容,所构建的轮中的错误版本字符串,等等),你会得到“{…}”消息。
在其中一些情况下,目前pip通过setup.py install返回到安装,因此安装仍然有可能成功。也就是说,pip总是尽可能多地尝试通过轮子安装包。这是因为使用轮子的各种优势(如更快的安装,可缓存,无需再次执行代码等)以及它是标准化格式的事实;不像(已弃用的)setup.py安装界面。
这里的错误消息是由于缺少wheel包,其中包含在setup.py bdist_wheel中构建轮子所需的逻辑。(pip安装轮可以修复这个问题——但它不会修复由于系统配置而导致的任何构建时间问题)
在将来的某个时候,我们将在默认情况下切换到一个更现代的构建系统(如果您是一个包作者,您可以通过添加pyproject.toml来选择加入),通过隔离的构建环境来解决这个问题,您将在其中安装wheel。:)
PEP 517:源代码树的独立于构建系统的格式
一篇关于“PEP 517和518简明英语”的博客文章
错误:
系统:aws ec2实例(t2小)
问题:在安装opencv python via
Pip3安装opencv-python
Problem with the CMake installation, aborting build. CMake executable is cmake
----------------------------------------
Failed building wheel for opencv-python
Running setup.py clean for opencv-python
什么对我有用
Pip3安装——升级PIP setuptools轮
在此之后,您仍然可能收到休闲错误错误
from .cv2 import *
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
安装libgl为我解决了这个错误。
sudo apt update
sudo apt install libgl1-mesa-glx
希望这能有所帮助
在我的例子中,在创建venv后更新pip versión,这将pip从9.0.1更新到20.3.1
python3 -m venv env/python
source env/python/bin/activate
pip3 install pip --upgrade
但是,信息是…
Using legacy 'setup.py install' for django-avatar, since package 'wheel' is not installed.
然后,我在更新pip后安装车轮包
python3 -m venv env/python
source env/python/bin/activate
pip3 install --upgrade pip
pip3 install wheel
信息是…
Building wheel for django-avatar (setup.py): started
default: Building wheel for django-avatar (setup.py): finished with status 'done'