Dies ist eine wirklich beliebte Frage hier bei SO, aber keine der vielen Antworten, die ich mir angesehen habe, erklärt klar, was dieser Fehler wirklich bedeutet und warum er auftritt.
Eine Quelle der Verwirrung ist, dass Sie (zum Beispiel) pip install pycparser
zuerst den Fehler erhalten:
Failed building wheel for pycparser
Darauf folgt die Meldung, dass das Paket war:
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
Was geht hier vor sich?
(Ich möchte verstehen, wie etwas fehlschlagen kann, aber dennoch installiert wird und ob Sie darauf vertrauen können, dass dieses Paket ordnungsgemäß funktioniert?)
Bisher ist die beste teilweise Erklärung, die ich gefunden habe, diese .
python
python-3.x
pip
python-wheel
not2qubit
quelle
quelle
pip
für die Anforderung kein Rad gefunden wird, lädt es die Quelldistanz herunter und versucht, lokal ein Rad daraus zu erstellen. Bei Erfolg wird das Radpip
für zukünftige Neuinstallationen im Cache gespeichert . Wechselt bei einem Fehler beim Erstellen des Radspip
von Source Dist (Aufrufpython setup.py install
) zur Legacy-Installation .wheel
Paket, sodass Siepip
keine Räder aus Quelldists bauen können. Wenn Sie Gebäuderäder explizit deaktivieren möchten, verwenden Sie das--no-binary
Flag :pip install somepkg --no-binary=somepkg
. Oder verwenden Siepip install somepkg --no-binary=:all:
, aber beachten Sie, dass dadurch die Räder für jedes für die Installation ausgewählte Paket deaktiviert werden, einschließlich der Abhängigkeiten. Wenn für einigepip
zu installierende Pakete keine Quelldistanz verfügbar ist , schlägt die Installation fehl.--no-binary
Weist pip an, nur Quelldistributionen herunterzuladen und zu verwenden. Das Flag, um zu verhindern, dass ein lokales Binärrad erstellt wird, ist in der Tat--no-cache-dir
.wheels
(0.32.2) also das ist nicht das problem. Aber vielleicht ist dempycparser
Paket kein Rad (*.whl
) zugeordnet? Aber wie kann ich das a priori überprüfen ?.tar.gz
Datei vorhanden ist und es sich um die Quelldistribution auf PyPI handelt (ein Rad hätte eine.whl
Erweiterung)Antworten:
(Pip Maintainer hier!)
Wenn das Paket kein Rad ist, versucht pip, ein Rad dafür zu bauen (via
setup.py bdist_wheel
). Wenn dies aus irgendeinem Grund fehlschlägt, wird die Meldung "Rad für Pycparser fehlgeschlagen" angezeigt, und pip greift direkt (viasetup.py install
) auf die Installation zurück .Sobald wir ein Rad haben, kann Pip das Rad durch korrektes Auspacken installieren. pip versucht so oft wie möglich, Pakete über Räder zu installieren. Dies liegt an verschiedenen Vorteilen der Verwendung von Rädern (wie schnellere Installationen, Cache-fähig, nicht erneutes Ausführen von Code usw.).
Ihre Fehlermeldung hier ist darauf zurückzuführen, dass das
wheel
Paket fehlt, das die zum Einbau der Räder erforderliche Logik enthältsetup.py bdist_wheel
. (pip install wheel
Kann das beheben.)Das Obige ist das Legacy-Verhalten, das derzeit die Standardeinstellung ist. Wir werden irgendwann in der Zukunft standardmäßig auf PEP 517 umsteigen und uns dafür auf einen standardbasierten Prozess umstellen. Wir haben auch isolierte Builds dafür, sodass in diesen Umgebungen standardmäßig ein Rad installiert ist. :) :)
quelle
wheel
Paket bereits installiert. Bitte fügen Sie auch einen Link zu PEP517 hinzu.Gestern habe ich den gleichen Fehler bekommen:
Failed building wheel for hddfancontrol
als ich liefpip3 install hddfancontrol
. Das Ergebnis warFailed to build hddfancontrol
. Die Ursache warerror: invalid command 'bdist_wheel'
undRunning setup.py bdist_wheel for hddfancontrol ... error
. Der Fehler wurde behoben, indem Folgendes ausgeführt wurde:(Von hier .)
Alternativ kann das "Rad" direkt von hier heruntergeladen werden . Nach dem Herunterladen kann es installiert werden, indem Folgendes ausgeführt wird:
quelle
pip3 install wheel
hat super funktioniert, auch innerhalb von 'python3 -m venv', ab heute bin ich neu bei venvSeitdem scheint niemand dies außer mir zu erwähnen. Meine eigene Lösung für das oben genannte Problem besteht meistens darin, sicherzustellen, dass die zwischengespeicherte Kopie deaktiviert wird, indem Sie Folgendes verwenden :
pip install <package> --no-cache-dir
.quelle
getting rid of the message
, dass die Installation auch dann fortgesetzt werden kann , wenn das Installationsprogramm der Ansicht ist, dass sie bereits aktualisiert wurde, da das Cache-Verzeichnis Rückstände von früheren und häufig fehlgeschlagenen Aktualisierungen enthält.Es kann hilfreich sein, diese Frage aus Sicht der Paketbereitstellung zu beantworten.
Es gibt viele Tutorials, in denen erklärt wird, wie ein Paket in PyPi veröffentlicht wird. Unten sind ein paar, die ich benutzt habe;
mittlere
echte Python
Ich habe die Erfahrung gemacht, dass Sie in den meisten dieser Tutorials nur den .tar der Quelle verwenden, kein Rad. Daher habe ich bei der Installation von Paketen, die mit diesen Lernprogrammen erstellt wurden, den Fehler "Rad konnte nicht erstellt werden" erhalten.
Ich fand später auf PyPi den Link zu den PSF -Dokumenten der Python Software Foundation . Ich habe festgestellt, dass der Einrichtungs- und Erstellungsprozess etwas anders ist und tatsächlich das Erstellen einer Raddatei umfasst.
Nach Verwendung der offiziell dokumentierten Methode wurde der Fehler bei der Installation meiner Pakete nicht mehr angezeigt.
Der Fehler kann also einfach davon abhängen, wie der Entwickler das Projekt gepackt und bereitgestellt hat. Keiner von uns wurde mit dem Wissen geboren, wie man PyPi benutzt, und wenn sie auf das falsche Tutorial gestoßen sind, können Sie die Lücken ausfüllen.
Ich bin sicher, dass dies nicht der einzige Grund für den Fehler ist, aber ich bin bereit zu wetten, dass dies ein Hauptgrund dafür ist.
quelle
Versuche dies:
sudo apt-get install libpcap-dev libpq-dev
Es hat bei mir funktioniert, als ich diese beiden installiert habe.
Weitere Informationen finden Sie unter dem Link hier
quelle
Unter Ubuntu 18.04 ist dieses Problem aufgetreten, da das
apt
Paket fürwheel
denwheel
Befehl nicht enthält . Ich denke, pip versucht, daswheel
Python-Paket zu importieren , und wenn dies gelingt, wird davon ausgegangen, dass derwheel
Befehl auch verfügbar ist. Ubuntu bricht diese Annahme.Das apt python3-Codepaket heißt
python3-wheel
. Dies wird automatisch installiert, da espython3-pip
empfohlen wird.Das apt python3 Wheel-Befehlspaket heißt
python-wheel-common
. Wenn Sie dies ebenfalls installieren, werden die Fehler "Fehlerhaftes Gebäuderad" für mich behoben.quelle
Ich habe die gleiche Meldung erhalten, als ich versucht habe, pip install django-imagekit zu installieren. Also habe ich Pip Install Wheel ausgeführt (ich hatte Python 2.7) und dann habe ich Pip Install Django-Imagekit erneut ausgeführt und es hat funktioniert. Vielen Dank
quelle
Dies kann Ihnen helfen! ....
Pycparser deinstallieren:
pip uninstall pycparser
Installieren Sie pycparser neu:
pip install pycparser
Ich habe den gleichen Fehler bei der Installation von termcolor erhalten und ihn durch Neuinstallation behoben.
quelle