pip install中的"Failed building wheel for X"是什么意思?
What is the meaning of "Failed building wheel for X" in pip install?
这是 SO 上真正流行的问题,但是 none 在我看过的许多答案中,清楚地解释了这个错误的真正含义以及它发生的原因。
混淆的一个来源是,当(例如)您执行 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
这是怎么回事?
(我想了解为什么有些东西会失败但仍然可以安装,以及您是否可以相信这个包能正常运行?)
到目前为止,我找到的最好的部分解释是 。
昨天,当我 运行 pip3 install hddfancontrol
时,我得到了同样的错误:Failed building wheel for hddfancontrol
。结果是Failed to build hddfancontrol
。原因是 error: invalid command 'bdist_wheel'
和 Running setup.py bdist_wheel for hddfancontrol ... error
。 运行 修复了以下错误:
pip3 install wheel
(来自 。)
或者,"wheel" 可以直接从 here 下载。下载后,可以通过运行以下方式安装:
pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
从包部署的角度来解决这个问题可能会有所帮助。
有很多教程解释了如何将包发布到 PyPi。以下是我用过的一对;
我的经验是,这些教程中的大多数只让您使用源代码的 .tar,而不是轮子。因此,在安装使用这些教程创建的包时,我收到了 "Failed to build wheel" 错误。
我后来在 Python Software Foundation 的文档 PSF Docs 中找到了 PyPi 上的 link。我发现他们的设置和构建过程略有不同,并且确实包括构建 wheel 文件。
使用官方记录的方法后,我在安装包时不再收到错误。
因此,错误可能只是开发人员如何打包和部署项目的问题。 None 我们天生就知道如何使用 PyPi,如果他们偶然发现了错误的教程——好吧,你可以填空。
我确定这不是错误的唯一原因,但我敢打赌这是错误的主要原因。
(这里是 pip 维护者!)
如果包不是轮子,pip 会尝试为它构建一个轮子(通过 setup.py bdist_wheel
)。如果由于任何原因(例如,缺少系统级库、与系统不兼容、构建轮中的错误版本字符串等)失败,您将收到“{...} 构建轮失败”消息。
在其中一些情况下,目前 pip 回退到通过 setup.py install
安装,因此安装仍有可能成功。也就是说,pip 总是尽可能多地尝试通过轮子安装包。这是因为使用轮子的各种优点(比如更快的安装、cache-able、不再执行代码等)以及它是一种标准格式的事实;与(已弃用)setup.py 安装界面不同。
这里的错误消息是由于缺少 wheel
包,其中包含在 setup.py bdist_wheel
中构建轮子所需的逻辑。 (pip install wheel
可以解决这个问题——但它不会解决由于系统配置而导致的任何构建时间问题)
将来的某个时候,我们将默认切换到更现代的构建系统(如果您是包作者,您可以 opt-in 通过添加 pyproject.toml
),这将解决这个问题,通过您将安装轮子的隔离构建环境。 :)
- PEP 517:A build-system independent format for source trees
- 关于“PEP 517 and 518 in Plain English”post 的博客
从那以后,除了我自己,似乎没有人再提起这个。我自己对上述问题的解决方案通常是确保禁用 cached 副本,方法是:pip install <package> --no-cache-dir
.
试试这个:
sudo apt-get install libpcap-dev libpq-dev
当我安装这两个时,它对我有用。
有关详细信息,请参阅 link here
在 Ubuntu 18.04 上,我 运行 解决了这个问题,因为 wheel
的 apt
包不包含 wheel
命令。我认为 pip 尝试导入 wheel
python 包,如果成功则假定 wheel
命令也可用。 Ubuntu 打破了这个假设。
apt python3代码包命名为python3-wheel
。这是自动安装的,因为 python3-pip
推荐它。
apt python3 wheel 命令包命名为python-wheel-common
。安装它也为我修复了 "failed building wheel" 错误。
我在尝试安装时收到了同样的消息
pip install django-imagekit.
所以我运行
pip install wheel
(我有 python 2.7)然后我重新 运行 pip install django-imagekit
并且成功了。
这可能对您有所帮助! ....
正在卸载 pycparser:
pip uninstall pycparser
重新安装 pycparser:
pip install pycparser
我在安装 termcolor 时遇到同样的错误,我通过重新安装修复了它。
我想补充一点,如果您的系统上只有 Python3,那么您需要开始使用 pip3 而不是 pip。
您可以使用以下命令安装pip3;
sudo apt install python3-pip -y
之后你可以尝试安装你需要的包;
sudo pip3 install <package>
错误:
系统:aws ec2 实例(t2 小)
问题:通过
安装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
希望对您有所帮助
我在安装 Brotli 时遇到了同样的问题
错误
Failed building wheel for Brotli
我从 here 下载 .whl
文件解决了这个问题
并使用以下命令安装它
C:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl
在我的例子中,创建 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后安装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'
当您没有 wheel 所需的包时,通常会出现此错误。
如果您使用的是 python3,则安装 python3-dev;如果您使用的是 python,则安装 python2-dev 2.
sudo apt-get install python3-dev
或
sudo apt-get install python2-dev
我正在尝试安装 python-nmap
工具,但出现此错误。
如果您使用的是Linux平台,请确保安装了nmap
工具,否则库python-nmap
将无法运行。
在基于 Red Hat 的发行版上,请安装 nmap
CLI,如下所示:
sudo yum install namp
当我尝试安装需要 '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
这是 SO 上真正流行的问题,但是 none 在我看过的许多答案中,清楚地解释了这个错误的真正含义以及它发生的原因。
混淆的一个来源是,当(例如)您执行 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
这是怎么回事?
(我想了解为什么有些东西会失败但仍然可以安装,以及您是否可以相信这个包能正常运行?)
到目前为止,我找到的最好的部分解释是
昨天,当我 运行 pip3 install hddfancontrol
时,我得到了同样的错误:Failed building wheel for hddfancontrol
。结果是Failed to build hddfancontrol
。原因是 error: invalid command 'bdist_wheel'
和 Running setup.py bdist_wheel for hddfancontrol ... error
。 运行 修复了以下错误:
pip3 install wheel
(来自
或者,"wheel" 可以直接从 here 下载。下载后,可以通过运行以下方式安装:
pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
从包部署的角度来解决这个问题可能会有所帮助。
有很多教程解释了如何将包发布到 PyPi。以下是我用过的一对;
我的经验是,这些教程中的大多数只让您使用源代码的 .tar,而不是轮子。因此,在安装使用这些教程创建的包时,我收到了 "Failed to build wheel" 错误。
我后来在 Python Software Foundation 的文档 PSF Docs 中找到了 PyPi 上的 link。我发现他们的设置和构建过程略有不同,并且确实包括构建 wheel 文件。
使用官方记录的方法后,我在安装包时不再收到错误。
因此,错误可能只是开发人员如何打包和部署项目的问题。 None 我们天生就知道如何使用 PyPi,如果他们偶然发现了错误的教程——好吧,你可以填空。
我确定这不是错误的唯一原因,但我敢打赌这是错误的主要原因。
(这里是 pip 维护者!)
如果包不是轮子,pip 会尝试为它构建一个轮子(通过 setup.py bdist_wheel
)。如果由于任何原因(例如,缺少系统级库、与系统不兼容、构建轮中的错误版本字符串等)失败,您将收到“{...} 构建轮失败”消息。
在其中一些情况下,目前 pip 回退到通过 setup.py install
安装,因此安装仍有可能成功。也就是说,pip 总是尽可能多地尝试通过轮子安装包。这是因为使用轮子的各种优点(比如更快的安装、cache-able、不再执行代码等)以及它是一种标准格式的事实;与(已弃用)setup.py 安装界面不同。
这里的错误消息是由于缺少 wheel
包,其中包含在 setup.py bdist_wheel
中构建轮子所需的逻辑。 (pip install wheel
可以解决这个问题——但它不会解决由于系统配置而导致的任何构建时间问题)
将来的某个时候,我们将默认切换到更现代的构建系统(如果您是包作者,您可以 opt-in 通过添加 pyproject.toml
),这将解决这个问题,通过您将安装轮子的隔离构建环境。 :)
- PEP 517:A build-system independent format for source trees
- 关于“PEP 517 and 518 in Plain English”post 的博客
从那以后,除了我自己,似乎没有人再提起这个。我自己对上述问题的解决方案通常是确保禁用 cached 副本,方法是:pip install <package> --no-cache-dir
.
试试这个:
sudo apt-get install libpcap-dev libpq-dev
当我安装这两个时,它对我有用。
有关详细信息,请参阅 link here
在 Ubuntu 18.04 上,我 运行 解决了这个问题,因为 wheel
的 apt
包不包含 wheel
命令。我认为 pip 尝试导入 wheel
python 包,如果成功则假定 wheel
命令也可用。 Ubuntu 打破了这个假设。
apt python3代码包命名为python3-wheel
。这是自动安装的,因为 python3-pip
推荐它。
apt python3 wheel 命令包命名为python-wheel-common
。安装它也为我修复了 "failed building wheel" 错误。
我在尝试安装时收到了同样的消息
pip install django-imagekit.
所以我运行
pip install wheel
(我有 python 2.7)然后我重新 运行 pip install django-imagekit
并且成功了。
这可能对您有所帮助! ....
正在卸载 pycparser:
pip uninstall pycparser
重新安装 pycparser:
pip install pycparser
我在安装 termcolor 时遇到同样的错误,我通过重新安装修复了它。
我想补充一点,如果您的系统上只有 Python3,那么您需要开始使用 pip3 而不是 pip。
您可以使用以下命令安装pip3;
sudo apt install python3-pip -y
之后你可以尝试安装你需要的包;
sudo pip3 install <package>
错误:
系统:aws ec2 实例(t2 小)
问题:通过
安装opencv pythonpip3 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
希望对您有所帮助
我在安装 Brotli 时遇到了同样的问题
错误
Failed building wheel for Brotli
我从 here 下载 .whl
文件解决了这个问题
并使用以下命令安装它
C:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl
在我的例子中,创建 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后安装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'
当您没有 wheel 所需的包时,通常会出现此错误。 如果您使用的是 python3,则安装 python3-dev;如果您使用的是 python,则安装 python2-dev 2.
sudo apt-get install python3-dev
或
sudo apt-get install python2-dev
我正在尝试安装 python-nmap
工具,但出现此错误。
如果您使用的是Linux平台,请确保安装了nmap
工具,否则库python-nmap
将无法运行。
在基于 Red Hat 的发行版上,请安装 nmap
CLI,如下所示:
sudo yum install namp
当我尝试安装需要 '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