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.