¿Por qué no puedo crear una rueda en Python?

190

Aquí están los comandos que estoy ejecutando:

$ python setup.py bdist_wheel
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: setup.py --help [cmd1 cmd2 ...]
   or: setup.py --help-commands
   or: setup.py cmd --help

error: invalid command 'bdist_wheel'

$ pip --version
pip 1.5.6 from /usr/local/lib/python3.4/site-packages (python 3.4)

$ python -c "import setuptools; print(setuptools.__version__)"
2.1

$ python --version
Python 3.4.1

$ which python
/usr/local/bin/python

Además, estoy ejecutando una Mac con Python casero

Aquí está mi script setup.py: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Me estoy volviendo loco, no puedo entender por qué esto no funcionaría.

vitiral
fuente
2
¿Y ha instalado el wheelpaquete como aconseja la respuesta de Thomas?
Martijn Pieters
1
Tengo el mismo problema. Pero parece que no usé sudo antes de la recomendación. Después de usar el comando con permiso de administración. funcionó.
cazador

Respuestas:

301

Instale el wheelpaquete primero:

pip install wheel

La documentación no es demasiado clara al respecto, pero "el proyecto de rueda proporciona un comando bdist_wheel para setuptools" en realidad significa "el paquete de rueda ..." .

Thomas Orozco
fuente
1
Así que escupe el archivo: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl: ¿funcionará con cualquier sistema operativo o hay algo más que deba hacer para que funcione? (el "paquete" es solo un montón de dependencias para que pip se instale ahora)
vitiral
1
@GarrettLinux No lo sabría, lo siento, pero le animo a que haga una pregunta por separado para eso; )
Thomas Orozco
1
También solucioné ese problema: agregar cualquier archivo al archivo setup.py le dio una rueda general. Mira el código actualizado en mi pregunta, por ejemplo.
vitiral
Puede obtener el error del OP incluso con la rueda instalada, si setup.py de alguna manera usa distutils en lugar de setuptools (como fue mi caso), vea la respuesta por geographika.
Oliver
44
Para mí, el problema era la versión antigua de pip. arreglado porpip install --upgrade pip
Ryu_hayabusa
167

También me encontré con el mensaje de error invalid command 'bdist_wheel'

Resulta que el paquete setup.py utiliza distutils en lugar de setuptools. Cambiarlo de la siguiente manera me permitió construir la rueda.

#from distutils.core import setup
from setuptools import setup
geographika
fuente
1
sí, ¡tuve ese problema también en un momento! Muy importante, y el mensaje de error es pobre.
vitiral
@geographika yes this is command también la documentación en docs.python.org/2/distutils/setupscript.html replicaría los problemas que está viendo ya que utiliza disutils
JamesD
3
También puede ser necesario cambiar from distutils.core import Extension, Commandal from setuptools import Extension, Commandmenos al paquete con el que estaba trabajando.
eseglem
Recibí este error para pycrypto y ni siquiera estaba importando la configuración. Sin embargo, agregué from setuptools import setupal principio y solucionó el problema.
haridsv
38

Actualice también sus herramientas de configuración.

pip install setuptools --upgrade

Si eso también falla, puede intentar con una --forcemarca adicional .

luckydonald
fuente
1
Se eliminaron mis herramientas de configuración o algo estaba mal. Así que tuve que hacer: pip install setuptools --upgrade --force
nycynik
12

También me encontré con esto de repente, después de que había funcionado previamente, y fue porque estaba dentro de un virtualenv, y wheelno estaba instalado en el virtualenv.

jbg
fuente
8

Actualiza tu pipprimero:

pip install --upgrade pip

para Python 3:

pip3 install --upgrade pip
Tombart
fuente
Esta es la respuesta más útil ahora. Las versiones más recientes de pip install no usan bdist_wheel, por lo que solo actualizar pip funcionó para mí, sin necesidad de instalar / actualizar setuptools o wheel
theferrit32
4

También podría ser que solo tienes un sistema python3. Por lo tanto, ha instalado los paquetes necesarios a través de pip3 install, como pip3 install wheel .

Tendrás que construir tus cosas usando python3 específicamente.

python3 setup.py sdist
python3 setup.py bdist_wheel

Salud.

Bart Dorlandt
fuente
4

Agregando otra respuesta: intente verificar su PYTHONPATH .

Primero, intente instalar de wheelnuevo:

pip install wheel

Esto debería decirle dónde está instalada la rueda, por ejemplo:

Requirement already satisfied: wheel in /usr/local/lib/python3.5/dist-packages

Luego agregue la ubicación de la rueda a su PYTHONPATH:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages/wheel

Ahora construir una rueda debería funcionar bien.

python setup.py bdist_wheel
avidreader610
fuente
2

Intenté todo lo dicho aquí sin suerte, pero encontré una solución. Después de ejecutar este comando (y fallar):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Vaya al directorio temporal que creó la herramienta (dado en el resultado del último comando), luego ejecute python setup.py bdist_wheel. El .whlarchivo está en la distcarpeta.

Aigrefin
fuente