To jest naprawdę popularne pytanie tutaj w SO, ale żadna z wielu odpowiedzi, na które patrzyłem, nie wyjaśnia jasno, co naprawdę oznacza ten błąd i dlaczego się pojawia.
Jednym ze źródeł nieporozumień jest to, że kiedy (na przykład) to robisz pip install pycparser
, najpierw pojawia się błąd:
Failed building wheel for pycparser
po którym następuje komunikat, że pakiet był:
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
Co tu się dzieje?
(Chciałbym zrozumieć, jak coś może się nie udać, ale nadal jest instalowane i czy możesz ufać, że ten pakiet działa poprawnie?)
Jak dotąd najlepszym częściowym wyjaśnieniem, jakie znalazłem, jest to .
python
python-3.x
pip
python-wheel
not2qubit
źródło
źródło
pip
nie znajdzie koła dla danego wymagania, pobiera źródło dist i próbuje zbudować z niego koło lokalnie. jeśli się powiedzie, koło zostanie zapisane wpip
pamięci podręcznej na potrzeby przyszłych ponownych instalacji. w przypadku niepowodzenia kompilacji kołapip
przełącza się na starszą instalację ze źródła dist (wywoływaniepython setup.py install
).wheel
pakietu, więcpip
nie możesz zbudować kół z plików źródłowych. jeśli chcesz jawnie niepełnosprawnymi kół budowlanych, należy użyć--no-binary
flagi:pip install somepkg --no-binary=somepkg
. Lub użyjpip install somepkg --no-binary=:all:
, ale uważaj, że spowoduje to wyłączenie kół dla każdego pakietu wybranego do instalacji, w tym zależności; Jeśli nie ma dostępnego źródła dist dla niektórych pakietówpip
do zainstalowania, instalacja zakończy się niepowodzeniem.--no-binary
instruuje pip, aby pobierał i używał tylko dystrybucji źródeł. Flaga uniemożliwiająca zbudowanie lokalnego koła binarnego to rzeczywiście--no-cache-dir
.wheels
(0.32.2), więc to nie jest problem. Ale możepycparser
pakiet nie ma*.whl
skojarzonego koła ( )? Ale jak mogę to sprawdzić a-priori ?.tar.gz
jest tam tylko plik i jest to dystrybucja źródeł na PyPI (koło miałoby.whl
rozszerzenie)Odpowiedzi:
(opiekun pip tutaj!)
Jeśli pakiet nie jest kołem, pip próbuje zbudować dla niego koło (przez
setup.py bdist_wheel
). Jeśli to się nie powiedzie z jakiegokolwiek powodu, pojawi się komunikat „Failed building wheel for pycparser” i pip wraca do instalacji bezpośredniej (viasetup.py install
).Gdy już mamy koło, pip może je zamontować po prawidłowym rozpakowaniu. pip próbuje instalować pakiety za pomocą kół tak często, jak to możliwe. Dzieje się tak z powodu różnych zalet używania kół (takich jak szybsze instalacje, możliwość buforowania, brak ponownego wykonywania kodu itp.).
Twój komunikat o błędzie jest spowodowany
wheel
brakiem pakietu, który zawiera logikę wymaganą do wbudowania kółsetup.py bdist_wheel
. (pip install wheel
może to naprawić.)Powyższe jest starszym zachowaniem, które jest obecnie domyślne; W przyszłości przejdziemy na PEP 517 domyślnie, przechodząc do procesu opartego na standardach. Mamy również izolowane kompilacje do tego, więc domyślnie miałbyś zainstalowane koło w tych środowiskach. :)
źródło
wheel
zainstalowany pakiet. Dodaj również link do PEP517.setup.py bdist_wheel
) i po prostu wykonać instalację (setup.py install
)?Wczoraj dostałem ten sam błąd:
Failed building wheel for hddfancontrol
kiedy biegałempip3 install hddfancontrol
. Wynik byłFailed to build hddfancontrol
. Przyczyną byłerror: invalid command 'bdist_wheel'
iRunning setup.py bdist_wheel for hddfancontrol ... error
. Błąd został naprawiony, uruchamiając następujące polecenie:( Stąd .)
Alternatywnie „koło” można pobrać bezpośrednio z tego miejsca . Po pobraniu można go zainstalować, uruchamiając następujące polecenie:
pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
źródło
pip3 install wheel
działało świetnie, nawet w środku 'python3 -m venv', od dziś jestem nowy w venvPonieważ nikt nie wspomina o tym poza mną. Moje własne rozwiązanie powyższego problemu jest najczęściej, aby upewnić się, aby wyłączyć pamięci podręcznej kopii za pomocą:
pip install <package> --no-cache-dir
.źródło
getting rid of the message
, że jest umożliwienie procesu instalacji nawet gdy instalator myśli, że został już zaktualizowany, dzięki katalogu pamięci podręcznej zawierającej pozostałości z poprzednich, często nieudanych aktualizacji.Warto odpowiedzieć na to pytanie z perspektywy wdrażania pakietu.
Istnieje wiele samouczków, które wyjaśniają, jak opublikować pakiet w PyPi. Poniżej znajduje się kilka, z których korzystałem;
średni
prawdziwy Python
Z mojego doświadczenia wynika, że w większości tych samouczków używasz tylko pliku .tar źródła, a nie koła. Dlatego podczas instalowania pakietów utworzonych przy użyciu tych samouczków otrzymałem błąd „Nie udało się zbudować koła”.
Później znalazłem link na PyPi do dokumentacji Python Software Foundation PSF Docs . Odkryłem, że ich proces konfiguracji i kompilacji jest nieco inny i rzeczywiście obejmuje tworzenie pliku koła.
Po użyciu oficjalnie udokumentowanej metody nie otrzymałem już błędu podczas instalowania moich pakietów.
Tak więc błąd może być po prostu kwestią tego, jak programista spakował i wdrożył projekt. Nikt z nas nie urodził się, wiedząc, jak używać PyPi, a jeśli trafił na niewłaściwy samouczek - cóż, możesz wypełnić puste miejsca.
Jestem pewien, że to nie jedyny powód błędu, ale założę się, że jest to główny powód.
źródło
Spróbuj tego:
sudo apt-get install libpcap-dev libpq-dev
U mnie zadziałało, gdy zainstalowałem te dwa.
Zobacz łącze tutaj, aby uzyskać więcej informacji
źródło
Błąd:
System: instancja aws ec2 (mała t2)
problem: podczas instalowania opencv python za pośrednictwem
pip3 install opencv-python
Problem with the CMake installation, aborting build. CMake executable is cmake ---------------------------------------- Failed building wheel for opencv-python Running setup.py clean for opencv-python
Co mi pomogło
pip3 install --upgrade pip setuptools wheel
Po tym nadal możesz otrzymać poniższy błąd
from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or directory
Zainstalowanie libgl rozwiązało problem za mnie.
Mam nadzieję że to pomoże
źródło
pip3 install --upgrade pip setuptools wheel
rozwiązałem to też dla mnieW systemie Ubuntu 18.04 napotkałem ten problem, ponieważ
apt
pakiet dlawheel
nie zawierawheel
polecenia. Myślę, że pip próbuje zaimportowaćwheel
pakiet Pythona, a jeśli to się powiedzie, zakłada, żewheel
polecenie jest również dostępne. Ubuntu łamie to założenie.Nazwa pakietu kodu apt python3
python3-wheel
. Jest to instalowane automatycznie, ponieważpython3-pip
zaleca to.Pakiet poleceń apt python3 wheel ma nazwę
python-wheel-common
. Zainstalowanie tego również rozwiązuje za mnie błędy „nieudanego koła budowania”.źródło
Otrzymałem ten sam komunikat, gdy próbowałem zainstalować pip install django-imagekit. Uruchomiłem więc koło instalacyjne pip (miałem Pythona 2.7), a następnie ponownie zainstalowałem pip install django-imagekit i zadziałało. Dzięki
źródło
Chciałbym dodać, że jeśli masz tylko Python3 w swoim systemie, musisz zacząć używać pip3 zamiast pip.
Możesz zainstalować pip3 za pomocą następującego polecenia;
Następnie możesz spróbować zainstalować pakiet, którego potrzebujesz;
źródło
Miałem ten sam problem podczas instalacji Brotli
BŁĄD
Failed building wheel for Brotli
Rozwiązałem to, pobierając
.whl
plik stąd i instalując go za pomocą poniższego poleceniaC:\Users\{user_name}\Downloads>pip install Brotli-1.0.9-cp39-cp39-win_amd64.whl
źródło
W moim przypadku zaktualizuj wersję pip po utworzeniu venv, ta aktualizacja pip z 9.0.1 na 20.3.1
python3 -m venv env/python source env/python/bin/activate pip3 install pip --upgrade
Ale wiadomość była ...
Using legacy 'setup.py install' for django-avatar, since package 'wheel' is not installed.
Następnie instaluję pakiet kół po aktualizacji pip
python3 -m venv env/python source env/python/bin/activate pip3 install --upgrade pip pip3 install wheel
A wiadomość była ...
Building wheel for django-avatar (setup.py): started default: Building wheel for django-avatar (setup.py): finished with status 'done'
źródło
To może ci pomóc! ....
Odinstalowywanie pycparser:
pip uninstall pycparser
Zainstaluj ponownie pycparser:
pip install pycparser
Wystąpił ten sam błąd podczas instalacji termcolor i naprawiłem go, instalując ponownie.
źródło