pip install 中“Failed building wheel for X”是什么意思?
- 2025-03-18 08:54:00
- admin 原创
- 83
问题描述:
这是 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('
', '
');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
这里发生了什么事?
(我想了解为什么某些东西可能会失败但仍然可以安装,以及您是否可以相信这个包可以正确运行?)
到目前为止我发现的最佳部分解释是这样的。
解决方案 1:
(pip 维护者在这里!)
更新:从 Python 3.12 开始不再需要这样做,pip 将在新虚拟环境中自动使用隔离构建。
快速复制粘贴:
pip install wheel
在使用 创建的每个新虚拟环境中都执行此操作venv
。
请继续阅读以了解详细信息和解释。
如果软件包不是 wheel,pip 会尝试为其构建 wheel(通过setup.py bdist_wheel
)。如果由于任何原因(例如缺少系统级库、与系统不兼容、构建的 wheel 中的版本字符串错误等)失败,您将收到“为 {...} 构建 wheel 失败”消息。
在某些情况下,目前,pip 会回退到通过 进行安装setup.py install
,因此安装仍然有可能成功。也就是说,pip 总是尽可能多地尝试通过 wheel 安装软件包。这是因为使用 wheel 有各种优势(例如安装速度更快、可缓存、不重复执行代码等),而且它是一种标准化格式;与(已弃用的)setup.py install 接口不同。
此处的错误信息是由于wheel
缺少包含构建轮子所需逻辑的包所致setup.py bdist_wheel
。(pip install wheel
可以修复该问题 - 但它无法修复由于系统配置导致的任何构建时间问题)
在未来的某个时候,我们将默认切换到更现代的构建系统(如果您是软件包作者,您可以通过添加来选择加入pyproject.toml
),通过安装 wheel 的隔离构建环境来解决这个问题。:)
PEP 517:与构建系统无关的源树格式
关于“用通俗易懂的英语解释 PEP 517 和 518 ”的博客文章
解决方案 2:
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
(从这里开始。)
或者,也可以直接从这里下载“wheel” 。下载后,可以通过运行以下命令进行安装:
pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
解决方案 3:
因为,似乎没有人单独提到这一点。我自己对上述问题的解决方案通常是确保使用以下方法禁用缓存pip install <package> --no-cache-dir
副本: 。
解决方案 4:
在我的例子中,创建 venv 后更新 pip 版本,将 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 后安装 wheel 包
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'
解决方案 5:
从包部署的角度来解决这个问题可能会有所帮助。
有很多教程讲解了如何将包发布到 PyPi。下面是我使用过的几个;
中等
真实蟒蛇
我的经验是,这些教程中的大多数都只要求您使用源代码的 .tar,而不是 wheel。因此,在安装使用这些教程创建的软件包时,我收到了“无法构建 wheel”错误。
后来我在 PyPi 上找到了 Python 软件基金会的文档PSF Docs的链接。我发现他们的设置和构建过程略有不同,确实包括构建一个 wheel 文件。
使用官方记录的方法后,我安装软件包时不再收到错误。
因此,错误可能只是开发人员如何打包和部署项目的问题。我们中没有人天生就知道如何使用 PyPi,如果他们碰巧遇到了错误的教程——好吧,你可以填补空白。
我确信这不是导致错误的唯一原因,但我敢打赌这是导致错误的主要原因。
解决方案 6:
这个错误大多发生在你没有 wheel 所需的软件包时。如果你使用的是 python3,则安装 python3-dev;如果你使用的是 python 2,则安装 python2-dev。
sudo apt-get install python3-dev
或者
sudo apt-get install python2-dev
解决方案 7:
错误 :
系统:aws ec2 实例(t2 small)
问题:通过以下方式安装 opencv python
pip3 install 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 install --upgrade pip setuptools wheel
在此之后,您仍然可能会收到以下错误
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
希望这有帮助
解决方案 8:
在 Ubuntu 18.04 上,我遇到了这个问题,因为apt
包中wheel
不包含该wheel
命令。我认为 pip 会尝试导入wheel
python 包,如果成功则假定该wheel
命令也可用。Ubuntu 打破了这一假设。
apt python3 代码包名为。由于推荐,python3-wheel
因此会自动安装。python3-pip
apt python3 wheel 命令包名为python-wheel-common
。安装它也修复了我遇到的“构建 wheel 失败”错误。
解决方案 9:
就我而言,运行以下命令解决了该问题:
pip install "cython<3.0.0" wheel && pip install pyyaml==5.4.1 --no-build-isolation
解决方案 10:
尝试一下:
sudo apt-get install libpcap-dev libpq-dev
当我安装了这两个之后,它就对我起作用了。
请参阅此处的链接了解更多信息
解决方案 11:
我尝试安装时收到了同样的消息
pip install django-imagekit.
所以我跑了
pip install wheel
(我有 python 2.7)然后我重新运行pip install django-imagekit
并且它成功了。
解决方案 12:
当我尝试安装需要“isal”的包时,我被这个问题困扰了几个小时,但isal安装失败了:
----------------------------------------
ERROR: Failed building wheel for isal
Failed to build isal
ERROR: Could not build wheels for isal which use PEP 517 and cannot be installed directly
对我有用的解决方案是安装libtool。
yum install libtool
解决方案 13:
在 VS Code 中安装使用 pandas 的 datacompy 时,我遇到了 wheel 错误。这帮我解决了这个问题:
pip install datacompy --no-deps --ignore-installed
解决方案 14:
我在安装 Brotli 时遇到了同样的问题
错误
Failed building wheel for Brotli
我通过从这里.whl
下载文件
并使用以下命令安装它来解决这个问题
C:Users{user_name}Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl
解决方案 15:
在 Linux 上,这很可能是由于未安装 build/dev 工具造成的。这也可能影响 psycopg2 或 pycrypto 等软件包... 安装这些依赖项应该可以解决问题。
sudo apt 安装 build-essential libpq-dev python3-dev
解决方案 16:
我在安装“pyblake2”包时也遇到了问题。在MacOS M2上运行!错误文本(近似文本):“无法为 pyblake2 构建 wheel...”但是“wheel”模块已成功安装!
解决方案:
从官方来源下载包:https://pypi.org/project/pyblake2/#modal-close
通过运行以下命令运行“setup.py”:~python3 setup.py
如果抛出错误:
a) pyblake2module.c:699:27: 错误:表达式不可分配 Py_TYPE(&blake2bType) = &PyType_Type;
b) pyblake2module.c:703:27: 错误:表达式不可分配 Py_TYPE(&blake2sType) = &PyType_Type;
替换以下行:
a) Py_TYPE(&blake2bType) = &PyType_Type; -> blake2bType.tp_base = &PyType_Type;
b) Py_TYPE(&blake2sType) = &PyType_Type; -> blake2sType.tp_base = &PyType_Type;
再次重复步骤#2。
不客气!
解决方案 17:
简单来说,就是说中的包requirements.txt
被设置为相对“弃用”的版本,而你当前的Python环境的底层实现无法解释wheel源码,或者故意产生错误。
处理此问题的一种方法是将“==”替换为requirements.txt
“>=”。这样,您可以迭代地仅更新需要“wheel”构建的软件包的版本。
解决方案 18:
我想补充一点,如果您的系统上只有 Python3,那么您需要开始使用 pip3 而不是 pip。
您可以使用以下命令安装 pip3;
sudo apt install python3-pip -y
此后,您可以尝试安装所需的包;
sudo pip3 install <package>
解决方案 19:
我尝试安装python-nmap
工具,但出现此错误。
如果您使用的是Linux平台,请确保nmap
已安装该工具,否则该库python-nmap
将无法工作。
在基于 Red Hat 的发行版上,请nmap
按如下方式安装 CLI:
sudo yum install namp
解决方案 20:
对于 mac-os,在终端中运行以下命令
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
解决方案 21:
这可能会对你有帮助!....
卸载 pycparser:
pip uninstall pycparser
重新安装 pycparser:
pip install pycparser
安装 termcolor 时我遇到了同样的错误,我通过重新安装修复了该错误。
扫码咨询,免费领取项目管理大礼包!