Почему python setup.py говорит неверную команду 'bdist_wheel' на Travis CI?

Пакет My Python имеет setup.py, который строит локально на Ubuntu Trusty и на новой Vagrant Ubuntu Trusty VM, когда я предоставляю его следующим образом:

sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
sudo -H pip install setuptools wheel virtualenv --upgrade

Но когда я делаю то же самое на Travis CI Trusty Beta VM:

- sudo apt-get install python python-dev --force-yes --assume-yes --fix-broken
- curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python2.7
- sudo -H pip install setuptools wheel virtualenv --upgrade

Я получаю:

python2.7 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'

Это Почему я не могу создать колесо в python?, но обратите внимание, что я устанавливаю колесо и обновляю setuptools.

Ответы

Ответ 1

Эта проблема возникает из-за:

  • для Python 2.7 установлена ​​старая версия pip (6.1.1)
  • несколько копий Python 2.7, установленных на образ Trusty Beta​​li >
  • другое место для Python 2.7 используется для sudo

Все это немного сложнее и лучше объяснено здесь https://github.com/travis-ci/travis-ci/issues/4989.

Моим решением было установить с пользователем travis вместо sudo:

- pip2.7 install --upgrade --user travis pip setuptools wheel virtualenv

Ответ 2

Придется установить пакет wheel. Все было обновлено, но все еще выдавало ошибку.

pip install wheel

затем

python setup.py bdist_wheel 

Работал без проблем.

Ответ 3

pip install wheel

работал для меня, но вы также можете добавить это

setup(
    ...
    setup_requires=['wheel']
)

в setup.py и сохраните команду pip install

Ответ 4

Если у вас уже установлены все необходимые модули, вам, вероятно, нужно импортировать модуль setuptools в ваш файл setup.py. Так что просто добавьте следующую строку в setup.py файла setup.py.

import setuptools
from distutils.core import setup
# other imports and setups

Это также упоминается в документации колеса. https://wheel.readthedocs.io/en/stable/#usage

Ответ 5

Эта ошибка странная, так как многие предложили ответы и получили смешанные решения. Я попробовал их, добавить их. Только когда я добавил pip install --upgrade pip окончательно убрал ошибку для меня. Но у меня нет времени, чтобы выделить, который есть что, так что это просто к вашему сведению.

Ответ 6

У меня уже было установлено wheel поэтому я попытался удалить и переустановить, и это решило проблему:

pip uninstall wheel
pip install wheel

Weird...

Ответ 7

Мое исправление было apt install python3-dev

Ответ 8

Попробуйте изменить файл setup.py, импортировав настройки из setuptools вместо distutils.core

Ответ 9

Не относится к Travis CI, но я столкнулся с подобной проблемой, пытаясь установить jupiter на мой Mac OSX 10.8.5, и ни один из других ответов не помог. Проблема была вызвана созданием "колеса" для пакета, называемого pyzmq, с сообщениями об ошибках, заполняющими сотни страниц.

Решение, которое я нашел, состояло в том, чтобы непосредственно установить старую версию этого пакета:

python -m pip install pyzmq==17 --user

После этого установка jupyter прошла без ошибок.