Esta es una pregunta realmente popular aquí en SO, pero ninguna de las muchas respuestas que he analizado explica claramente qué significa realmente este error y por qué ocurre.
Una fuente de confusión es que cuando (por ejemplo) lo hace pip install pycparser
, primero recibe el error:
Failed building wheel for pycparser
que luego es seguido por el mensaje de que el paquete era:
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
¿Que esta pasando aqui?
(Me gustaría entender cómo algo puede fallar pero aún así instalarse y si puede confiar en que este paquete funciona correctamente)
Hasta ahora, la mejor explicación parcial que he encontrado es la siguiente .
python
python-3.x
pip
python-wheel
not2qubit
fuente
fuente
pip
no encuentra una rueda para el requisito, descarga la fuente dist e intenta construir una rueda localmente. si tiene éxito, la rueda se almacena enpip
la memoria caché para futuras reinstalaciones. si falla la construcción de la rueda,pip
cambia a la instalación heredada desde la fuente dist (invocandopython setup.py install
).wheel
paquete, porpip
lo que no puede construir ruedas a partir de discos de origen. si quieres desactivar ruedas construcción explícita, utilice la--no-binary
bandera:pip install somepkg --no-binary=somepkg
. O usepip install somepkg --no-binary=:all:
, pero tenga en cuenta que esto desactivará las ruedas para cada paquete seleccionado para la instalación, incluidas las dependencias; si no hay una distribución de origen disponible para algún paquete quepip
deba instalarse, la instalación fallará.--no-binary
indica a pip que solo descargue y use distribuciones de código fuente. La bandera para evitar que se construya una rueda binaria local sí lo es--no-cache-dir
.wheels
(0.32.2) así que ese no es el problema. ¿Pero tal vez elpycparser
paquete no tiene una rueda (*.whl
) asociada? Pero, ¿cómo puedo comprobar esto a priori ?.tar.gz
archivo allí y es la distribución de origen en PyPI (una rueda tendría una.whl
extensión)Respuestas:
(¡mantenedor de pip aquí!)
Si el paquete no es una rueda, pip intenta construir una rueda para él (vía
setup.py bdist_wheel
). Si eso falla por alguna razón, aparece el mensaje "Falló la rueda de construcción para pycparser" y pip vuelve a instalar directamente (víasetup.py install
).Una vez que tenemos una rueda, pip puede instalar la rueda desempaquetando correctamente. pip intenta instalar paquetes a través de ruedas tan a menudo como puede. Esto se debe a varias ventajas del uso de ruedas (como instalaciones más rápidas, almacenamiento en caché, no ejecutar código de nuevo, etc.).
Su mensaje de error aquí se debe a
wheel
que falta el paquete, que contiene la lógica necesaria para construir las ruedassetup.py bdist_wheel
. (pip install wheel
puede arreglar eso).Lo anterior es el comportamiento heredado que actualmente es el predeterminado; cambiaremos a PEP 517 de forma predeterminada, en algún momento en el futuro, para pasar a un proceso basado en estándares para esto. También tenemos compilaciones aisladas para eso, por lo que tendría la rueda instalada en esos entornos de forma predeterminada. :)
fuente
wheel
paquete instalado. También agregue un enlace a PEP517.setup.py bdist_wheel
) y simplemente hacer la instalación (setup.py install
)?Ayer, recibí el mismo error:
Failed building wheel for hddfancontrol
cuando ejecutépip3 install hddfancontrol
. El resultado fueFailed to build hddfancontrol
. La causa fueerror: invalid command 'bdist_wheel'
yRunning setup.py bdist_wheel for hddfancontrol ... error
. El error se solucionó ejecutando lo siguiente:(Desde aquí .)
Alternativamente, la "rueda" se puede descargar directamente desde aquí . Cuando se descarga, se puede instalar ejecutando lo siguiente:
pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
fuente
pip3 install wheel
funcionó muy bien, incluso dentro de 'python3 -m venv', a partir de hoy soy nuevo en venvDesde entonces, nadie parece mencionar esto aparte de mí. Mi propia solución al problema anterior es lo más a menudo para asegurarse de desactivar la caché copia utilizando:
pip install <package> --no-cache-dir
.fuente
getting rid of the message
, está permitiendo que la instalación continúe incluso cuando el instalador piensa que ya se ha actualizado, debido a que el directorio de caché contiene residuos de actualizaciones anteriores y, a menudo, fallidas.Puede resultar útil abordar esta cuestión desde la perspectiva de la implementación de paquetes.
Hay muchos tutoriales que explican cómo publicar un paquete en PyPi. A continuación se muestran un par que he usado;
pitón real mediana
Mi experiencia es que la mayoría de estos tutoriales solo hacen que use el .tar de la fuente, no una rueda. Por lo tanto, al instalar paquetes creados con estos tutoriales, recibí el error "No se pudo construir la rueda".
Más tarde encontré el enlace en PyPi a los documentos PSF Docs de la Python Software Foundation . Descubrí que su proceso de configuración y construcción es ligeramente diferente y, de hecho, incluye la construcción de un archivo de rueda.
Después de usar el método documentado oficialmente, ya no recibí el error al instalar mis paquetes.
Por lo tanto, el error podría ser simplemente una cuestión de cómo el desarrollador empaquetó e implementó el proyecto. Ninguno de nosotros nació sabiendo cómo usar PyPi, y si se encontraron con el tutorial equivocado, bueno, puede completar los espacios en blanco.
Estoy seguro de que esa no es la única razón del error, pero estoy dispuesto a apostar que es una de las principales razones.
fuente
Prueba esto:
sudo apt-get install libpcap-dev libpq-dev
Me ha funcionado cuando instalé estos dos.
Consulte el enlace aquí para obtener más información.
fuente
En Ubuntu 18.04, encontré este problema porque el
apt
paquetewheel
no incluye elwheel
comando. Creo que pip intenta importar elwheel
paquete de Python y, si tiene éxito, se asume que elwheel
comando también está disponible. Ubuntu rompe esa suposición.El paquete de código apt python3 se llama
python3-wheel
. Esto se instala automáticamente porque lopython3-pip
recomienda.El paquete de comandos de rueda de apt python3 se llama
python-wheel-common
. La instalación de esto también corrige los errores de "rueda de construcción fallida" para mí.fuente
Recibí el mismo mensaje cuando intenté instalar pip install django-imagekit. Así que ejecuté pip install wheel (tenía python 2.7) y luego volví a ejecutar pip install django-imagekit y funcionó. Gracias
fuente
Me gustaría agregar que si solo tiene Python3 en su sistema, entonces debe comenzar a usar pip3 en lugar de pip.
Puede instalar pip3 usando el siguiente comando;
Después de esto, puede intentar instalar el paquete que necesita con;
fuente
Error:
Sistema: instancia de aws ec2 (t2 pequeña)
problema: al instalar opencv python a través de
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
Que funciono para mi
pip3 install --upgrade pip setuptools wheel
Después de esto, es posible que reciba un error de error siguiente
from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or directory
La instalación de libgl resolvió el error por mí.
Espero que esto ayude
fuente
Tuve el mismo problema al instalar Brotli
ERROR
Failed building wheel for Brotli
Lo resolví descargando el
.whl
archivo desde aquí e instalándolo usando el siguiente comandoC:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl
fuente
¡Esto puede ayudarte! ....
Desinstalar pycparser:
pip uninstall pycparser
Reinstale pycparser:
pip install pycparser
Recibí el mismo error al instalar termcolor y lo solucioné volviéndolo a instalar.
fuente