Dlaczego nie mogę utworzyć koła w Pythonie?


190

Oto polecenia, które uruchamiam:

$ 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

Ponadto uruchamiam komputer Mac z pythonem homebrewed

Oto mój skrypt setup.py: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Szaleję absolutnie - nie mogę zrozumieć, dlaczego to nie zadziała.


2
I zainstalowałeś wheelpakiet zgodnie z zaleceniami Thomasa?
Martijn Pieters

1
Mam ten sam problem. Ale wygląda na to, że nie używałem sudo przed pochwaleniem. Po użyciu polecaj z uprawnieniami administratora. zadziałało.
łowca

Odpowiedzi:


301

Najpierw zainstaluj wheelpakiet :

pip install wheel

Dokumentacja nie jest zbyt jasna, ale „projekt koła zawiera polecenie bdist_wheel dla setuptools” w rzeczywistości oznacza pakiet koła ...” .


1
Więc wypluł ten plik: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - czy to zadziała z dowolnym systemem operacyjnym, czy jest coś jeszcze, co muszę zrobić, aby go uruchomić? („pakiet” to tylko kilka zależności, które pip ma zainstalować teraz)
vitiral

1
@GarrettLinux Nie wiem, przepraszam, ale zachęcam do zadawania osobnych pytań; )
Thomas Orozco

1
Naprawiłem również ten problem - dodanie dowolnego pliku do pliku setup.py dało mu ogólne koło. Sprawdź na przykład zaktualizowany kod w moim pytaniu.
vitiral

Możesz otrzymać błąd OP nawet przy zainstalowanym kole, jeśli setup.py w jakiś sposób używa distutils zamiast setuptools (jak dla mnie), zobacz odpowiedź geografii.
Oliver,

4
Dla mnie problemem była stara wersja pipa. naprawiony przezpip install --upgrade pip
Ryu_hayabusa

167

Natknąłem się również na komunikat o błędzie invalid command 'bdist_wheel'

Okazuje się, że pakiet setup.py używał distutils zamiast setuptools. Zmiana tego w następujący sposób pozwoliła mi zbudować koło.

#from distutils.core import setup
from setuptools import setup

1
tak, ja też miałem ten problem! Bardzo ważne, a komunikat o błędzie jest słaby.
vitiral

@geographika tak, to polecenie również dokumentacja na docs.python.org/2/distutils/setupscript.html replikuje problemy, które widzisz, ponieważ używa disutils
JamesD

3
Może być również konieczne, aby zmienić from distutils.core import Extension, Commandsię from setuptools import Extension, Commandprzynajmniej na opakowaniu ja pracuje.
eseglem

Dostałem ten błąd dla pycrypto i nawet nie importowałem instalacji. Jednak dodałem from setuptools import setupna początku i to rozwiązało problem.
haridsv

38

Zaktualizuj również swoje ustawienia.

pip install setuptools --upgrade

Jeśli to też się nie powiedzie, możesz spróbować z dodatkową --forceflagą.


1
moje setuptools zostały usunięte lub coś było nie tak. Musiałem więc zrobić: pip install setuptools
upgrade

12

Nagle na to wpadłem, po tym, jak wcześniej zadziałało, i to dlatego, że byłem w virtualenv i wheelnie zostałem zainstalowany w virtualenv.


8

Zaktualizuj swój pippierwszy:

pip install --upgrade pip

dla Python 3:

pip3 install --upgrade pip

To jest teraz najbardziej przydatna odpowiedź. Nowsze wersje instalacji pip nie używają bdist_wheel, więc po prostu aktualizacja pip działała dla mnie, bez potrzeby instalowania / aktualizacji setuptools lub koła
theferrit32

4

Może być również tak, że masz tylko system python3. Dlatego zainstalowałeś niezbędne pakiety za pomocą instalacji pip3, podobnie jak koło instalacyjne pip3 .

Musisz zbudować swoje rzeczy przy użyciu Python3.

python3 setup.py sdist
python3 setup.py bdist_wheel

Twoje zdrowie.


4

Rzucając inną odpowiedź: spróbuj sprawdzić PYTHONPATH.

Najpierw spróbuj zainstalować wheelponownie:

pip install wheel

Powinno to powiedzieć ci, gdzie jest zainstalowane koło, np .:

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

Następnie dodaj lokalizację koła do PYTHONPATH:

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

Teraz budowanie koła powinno działać dobrze.

python setup.py bdist_wheel

2

Próbowałem wszystkiego, co powiedziano tutaj, bez powodzenia, ale znalazłem obejście. Po uruchomieniu tego polecenia (i niepowodzenia):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Przejdź do katalogu tymczasowego utworzonego przez narzędzie (podanego w danych wyjściowych ostatniego polecenia), a następnie uruchom python setup.py bdist_wheel. .whlPlik znajduje się w distfolderze.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.