Почему я не могу создать колесо на питоне?


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
У меня такая же проблема. Но похоже, что я не использовал sudo до комманды. После использования комменд с разрешением администратора. это сработало.
hunter

Ответы:


304

Сначала установите wheelпакет :

pip install wheel

В документации по этому поводу не очень ясно, но «проект wheel предоставляет команду bdist_wheel для setuptools» на самом деле означает « пакет wheel ...» .


1
Так что выложите файл: nioblocks-1.01-cp34-cp34m-macosx_10_9_x86_64.whl - это будет работать с любой ОС, или мне нужно что-то еще сделать, чтобы заставить его работать? («пакет» - это просто набор зависимостей для установки pip прямо сейчас)
vitiral

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

1
Я исправил и эту проблему - добавление любого файла в файл setup.py дало ему общее колесо. Посмотрите, например, обновленный код в моем вопросе.
vitiral

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

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

168

Я также столкнулся с сообщением об ошибке invalid command 'bdist_wheel'

Оказывается, пакет setup.py использовал distutils, а не setuptools. Изменив его следующим образом, я смог построить колесо.

#from distutils.core import setup
from setuptools import setup

1
да, у меня тоже когда-то была эта проблема! Очень важно и плохое сообщение об ошибке.
vitiral

@geographika да, это команда, также документация на docs.python.org/2/distutils/setupscript.html будет воспроизводить проблемы, которые вы видите, поскольку она использует disutils
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
мои setuptools были удалены, или что-то пошло не так. Так что мне пришлось сделать: pip install setuptools --upgrade --force
nycynik

13

Я также неожиданно столкнулся с этим, после того, как он ранее работал, и это было потому, что я был внутри virtualenv, а wheelне был установлен в virtualenv.


8

Обновите свой pipпервый:

pip install --upgrade pip

для Python 3:

pip3 install --upgrade pip

На данный момент это самый полезный ответ. В более новых версиях pip install не используется bdist_wheel, поэтому у меня сработало простое обновление pip, без необходимости устанавливать / обновлять
инструменты

4

Также может быть, что у вас только система python3. Таким образом, вы установили необходимые пакеты с помощью pip3 install, например pip3 install wheel .

Вам нужно будет создавать свои материалы с использованием 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.