Warum kann ich in Python kein Rad erstellen?

190

Hier sind die Befehle, die ich ausführe:

$ 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

Außerdem verwende ich einen Mac mit selbstgebrauter Python

Hier ist mein setup.py-Skript: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Ich werde absolut verrückt - ich kann nicht herausfinden, warum das nicht funktionieren würde.

vitiral
quelle
2
Und Sie haben das wheelPaket installiert , wie es in der Antwort von Thomas empfohlen wird?
Martijn Pieters
1
Ich habe das gleiche Problem. Aber es scheint, dass ich vor dem Lob kein Sudo benutzt habe. Nach der Verwendung der Empfehlung mit Administratorberechtigung. es funktionierte.
Jäger

Antworten:

301

Installieren Sie zuerst das wheelPaket :

pip install wheel

Die Dokumentation ist nicht allzu klar auf das, aber „das Rad Projekt stellt einen bdist_wheel Befehl für Setuptools“ bedeutet eigentlich „das Rad Paket ...“ .

Thomas Orozco
quelle
1
Das spuckt also die Datei aus: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - funktioniert das mit jedem Betriebssystem oder muss ich noch etwas tun, damit es funktioniert? (Das "Paket" ist nur eine Reihe von Abhängigkeiten, die Pip gerade installieren muss)
Vitiral
1
@ GarrettLinux Ich würde es nicht wissen, es tut mir leid, aber ich möchte Sie ermutigen, eine separate Frage zu stellen. )
Thomas Orozco
1
Ich habe auch dieses Problem behoben - das Hinzufügen einer Datei zur Datei setup.py gab ihr ein allgemeines Rad. Schauen Sie sich zum Beispiel den aktualisierten Code in meiner Frage an.
Vitiral
Sie können den OP-Fehler auch bei installiertem Rad erhalten, wenn die setup.py irgendwie distutils anstelle von setuptools verwendet (wie es bei mir der Fall war), siehe die Antwort von geographika.
Oliver
4
Für mich war das Problem die alte Version von Pip. behoben vonpip install --upgrade pip
Ryu_hayabusa
167

Ich bin auch auf die Fehlermeldung gestoßen invalid command 'bdist_wheel'

Es stellt sich heraus, dass das Paket setup.py Distutils anstelle von Setuptools verwendet. Durch folgendes Ändern konnte ich das Rad bauen.

#from distutils.core import setup
from setuptools import setup
geographika
quelle
1
Ja, ich hatte dieses Problem auch einmal! Sehr wichtig und die Fehlermeldung ist schlecht.
Vitiral
@geographika Ja, dies ist ein Befehl. Auch die Dokumentation auf docs.python.org/2/distutils/setupscript.html würde die Probleme replizieren, die Sie sehen, wenn sie Disutils verwenden
JamesD
3
Kann auch erforderlich sein , zu ändern , from distutils.core import Extension, Commandum from setuptools import Extension, Commandzumindest für Paket mit Ich arbeite.
Eseglem
Ich habe diesen Fehler für pycrypto erhalten und es wurde nicht einmal das Setup importiert. Allerdings habe ich from setuptools import setupam Anfang hinzugefügt und es hat das Problem behoben.
Haridsv
38

Aktualisieren Sie auch Ihre Setuptools.

pip install setuptools --upgrade

Wenn dies ebenfalls fehlschlägt, können Sie es mit einem zusätzlichen --forceFlag versuchen .

Glückydonald
quelle
1
Meine Setuptools wurden entfernt oder etwas stimmte nicht. Also musste ich tun: pip install setuptools --upgrade --force
nycynik
12

Ich bin auch plötzlich darauf gestoßen, nachdem es zuvor funktioniert hatte, und das lag daran, dass ich mich in einer virtuellen Umgebung befand und wheelnicht in der virtuellen Umgebung installiert war.

jbg
quelle
8

Aktualisieren Sie Ihre piperste:

pip install --upgrade pip

für Python 3:

pip3 install --upgrade pip
Tombart
quelle
Dies ist jetzt die nützlichste Antwort. Neuere Versionen von pip install verwenden kein bdist_wheel, daher funktionierte nur das Upgrade von pip für mich, ohne dass Setuptools oder Wheel installiert / aktualisiert werden mussten
theferrit32
4

Es kann auch sein, dass Sie nur ein Python3-System haben. Sie haben daher die erforderlichen Pakete über pip3 install installiert, wie z . B. pip3 install rad .

Sie müssen Ihre Inhalte speziell mit Python3 erstellen.

python3 setup.py sdist
python3 setup.py bdist_wheel

Prost.

Bart Dorlandt
quelle
4

Geben Sie eine andere Antwort ein: Versuchen Sie, Ihre zu überprüfen PYTHONPATH.

Versuchen Sie zunächst wheelerneut , Folgendes zu installieren :

pip install wheel

Dies sollte Ihnen sagen, wo das Rad installiert ist, z.

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

Fügen Sie dann die Position des Rads zu Ihrem hinzu PYTHONPATH:

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

Jetzt sollte der Bau eines Rades gut funktionieren.

python setup.py bdist_wheel
avidreader610
quelle
2

Ich habe alles, was hier gesagt wurde, ohne Glück ausprobiert, aber eine Problemumgehung gefunden. Nach dem Ausführen dieses Befehls (und dem Fehlschlagen):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Wechseln Sie in das temporäre Verzeichnis, das das Tool erstellt hat (in der Ausgabe des letzten Befehls angegeben), und führen Sie es aus python setup.py bdist_wheel. Die .whlDatei befindet sich im distOrdner.

Aigrefin
quelle