Чому я не можу створити колесо в пітоні?


190

Ось команди, які я виконую:

$ 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

Також я запускаю mac з домашнім пітоном

Ось мій сценарій setup.py: https://gist.github.com/cloudformdesign/4791c46fe7cd52eb61cd

Я абсолютно божевільний - я не можу зрозуміти, чому це не працює.


2
І ви встановили wheelпакунок, як радить відповідь Томаса?
Мартійн Пітерс

1
У мене така ж проблема. Але здається, що я не використовував судо перед похвалою. Після використання commend з дозволом адміністратора. це спрацювало.
мисливець

Відповіді:


301

Встановіть спочатку wheelпакет :

pip install wheel

Документація щодо цього не надто чітка, але "проект колеса містить команду bdist_wheel для setuptools" насправді означає "колесо пакет ..." .


1
Так що виплюнути файл: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - це буде працювати з будь-якою ОС, чи є щось інше, що я повинен зробити, щоб він працював? ("пакунок" - це лише купа залежностей, які потрібно встановити зараз, якщо ви хочете встановити піп)
vitiral

1
@GarrettLinux Я б не знав, вибачте, але я б радив вам задати окреме питання для цього; )
Томас Ороско

1
Я вирішив і цю проблему - додавши будь-який файл до файла setup.py, він дав йому загальне колесо. Наприклад, ознайомтеся з оновленим кодом у моєму запитанні.
витірал

Ви можете отримати помилку OP навіть при встановленому колесі, якщо setup.py якось використовує distutils замість setuptools (як це було у мене), дивіться відповідь у geographika.
Олівер

4
Для мене проблемою була стара версія pip. зафіксованоpip install --upgrade pip
Ryu_hayabusa

167

Я також наткнувся на повідомлення про помилку invalid command 'bdist_wheel'

Виявляється, пакет setup.py використовував distutils, а не setuptools. Змінення його наступним чином дозволило мені створити колесо.

#from distutils.core import setup
from setuptools import setup

1
Так, у мене була ця проблема і свого часу! Дуже важливо, а повідомлення про помилку - неякісне.
витірал

@geographika так, це командування також, документація на docs.python.org/2/distutils/setupscript.html буде повторювати проблеми, які ви бачите, оскільки використовує дистиляти
JamesD

3
Може бути також необхідно змінити , from distutils.core import Extension, Commandщоб по from setuptools import Extension, Commandкрайней мере , на упаковці я працював.
eseglem

Я отримав цю помилку для pycrypto, і вона навіть не імпортувала налаштування. Однак я додав from setuptools import setupна початку, і це вирішило проблему.
haridsv

38

Оновіть свої налаштування також.

pip install setuptools --upgrade

Якщо і це не вдається, ви можете спробувати з додатковим --forceпрапором.


1
мої налаштування видалено, або щось було не так. Тож мені довелося зробити: pip install setuptools --upgrade --force
nycynik

12

Я також наткнувся на це раптом, після того, як він раніше працював, і це було тому, що я був всередині virtualenv, і wheelне був встановлений у virtualenv.


8

Оновіть своє pipперше:

pip install --upgrade pip

для Python 3:

pip3 install --upgrade pip

Це найкорисніша відповідь зараз. Новіші версії встановлення pip не використовують bdist_wheel, тому просто оновлення pip працювало для мене, не потребуючи встановлення / оновлення setuptools або колеса
theferrit32

4

Можливо, у вас є лише система python3. Таким чином, ви встановили необхідні пакети через pip3 install, як колесо для встановлення pip3 .

Вам потрібно буде створити свої речі, використовуючи python3 спеціально.

python3 setup.py sdist
python3 setup.py bdist_wheel

Ура.


4

Накидання іншої відповіді: Спробуйте перевірити свою PYTHONPATH.

Спочатку спробуйте встановити wheelще раз:

pip install wheel

Це має говорити про те, де встановлено колесо, наприклад:

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

Потім додайте розташування колеса до свого PYTHONPATH:

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

Зараз побудова колеса повинна справно працювати.

python setup.py bdist_wheel

2

Я спробував усе сказане тут без жодної удачі, але знайшов рішення. Після запуску цієї команди (і відмови):bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

Перейдіть до тимчасової директорії зроблений інструмент (вказаний у висновку останньої команди), після чого виконайте python setup.py bdist_wheel. .whlФайл знаходиться в distпапці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.