Perché non riesco a creare una ruota in Python?


190

Ecco i comandi che sto eseguendo:

$ 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

Inoltre, sto eseguendo un mac con Python homebrewed

Ecco il mio script setup.py: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Sto diventando assolutamente pazzo - non riesco a capire perché questo non funzionerebbe.


2
E hai installato il wheelpacchetto come consiglia la risposta di Thomas?
Martijn Pieters

1
Ho lo stesso problema. Ma sembra che non abbia usato sudo prima dell'elogio. Dopo aver usato il encomio con il permesso di amministratore. ha funzionato.
cacciatore

Risposte:


301

Installare prima il wheelpacchetto :

pip install wheel

La documentazione non è eccessivamente chiara su questo, ma "il progetto wheel fornisce un comando bdist_wheel per setuptools" significa in realtà "il pacchetto ruote ..." .


1
In modo che sputi il ​​file: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - funzionerà con qualsiasi sistema operativo o c'è qualcos'altro che devo fare per farlo funzionare? (il "pacchetto" è solo un mucchio di dipendenze per pip da installare in questo momento)
vitiral

1
@GarrettLinux Non lo so, mi dispiace, ma ti incoraggio a fare una domanda separata per quello; )
Thomas Orozco,

1
Ho risolto anche questo problema - l'aggiunta di qualsiasi file al file setup.py gli ha dato una ruota generale. Controlla il codice aggiornato nella mia domanda per esempio.
vitirale

Puoi ottenere l'errore dell'OP anche con la ruota installata, se setup.py usa in qualche modo distutils invece di setuptools (come è stato per me), vedi la risposta di geographika.
Oliver,

4
Per me il problema era la vecchia versione di pip. riparato dapip install --upgrade pip
Ryu_hayabusa il

167

Ho anche incontrato il messaggio di errore invalid command 'bdist_wheel'

Si scopre che il pacchetto setup.py ha utilizzato distutils anziché setuptools. Modificandolo come segue mi ha permesso di costruire la ruota.

#from distutils.core import setup
from setuptools import setup

1
sì, ho avuto quel problema anche una volta! Molto importante e il messaggio di errore è scadente.
Vitiral

@geographika sì, questo è il comando anche la documentazione su docs.python.org/2/distutils/setupscript.html replicherà i problemi che stai vedendo mentre usa disutils
JamesD

3
Può anche essere necessario modificare from distutils.core import Extension, Commandper from setuptools import Extension, Commandalmeno per il pacchetto con cui stavo lavorando.
eseglem,

Ho ricevuto questo errore per pycrypto e non importava nemmeno l'installazione. Tuttavia, ho aggiunto from setuptools import setupall'inizio e risolto il problema.
Haridsv,

38

Aggiorna anche i tuoi strumenti di installazione.

pip install setuptools --upgrade

Se anche questo fallisce, puoi provare con un --forceflag aggiuntivo .


1
i miei setuptools sono stati rimossi, o qualcosa non andava. Quindi ho dovuto fare: pip install setuptools --upgrade --force
nycynik l'

12

Mi sono anche imbattuto all'improvviso, dopo che aveva funzionato in precedenza, ed era perché ero all'interno di un virtual virtual, e wheelnon ero installato nel virtual virtual.


8

Aggiorna il tuo pipprimo:

pip install --upgrade pip

per Python 3:

pip3 install --upgrade pip

Questa è la risposta più utile ora. Le versioni più recenti di pip install non usano bdist_wheel, quindi solo l'aggiornamento di pip ha funzionato per me, senza la necessità di installare / aggiornare setuptools o wheel
theferrit32

4

Potrebbe anche essere che hai solo un sistema python3. Pertanto hai installato i pacchetti necessari tramite l'installazione di pip3, come la ruota di installazione di pip3 .

Dovrai creare le tue cose usando python3 specificamente.

python3 setup.py sdist
python3 setup.py bdist_wheel

Saluti.


4

Lanciando un'altra risposta: prova a controllare il tuo PYTHONPATH .

Innanzitutto, prova a installare wheel :

pip install wheel

Questo dovrebbe dirti dove è installata la ruota, ad esempio:

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

Quindi aggiungi la posizione della ruota al tuo PYTHONPATH :

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

Ora costruire una ruota dovrebbe funzionare bene.

python setup.py bdist_wheel

2

Ho provato tutto quanto detto qui senza fortuna, ma ho trovato una soluzione alternativa. Dopo aver eseguito questo comando (e fallito):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Vai alla directory temporanea creata dallo strumento (indicata nell'output dell'ultimo comando), quindi esegui python setup.py bdist_wheel. Il .whlfile è nella distcartella.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.