Чому python setup.py говорить недійсну команду 'bdist_wheel' у програмі Travis CI?


330

У моєму пакеті 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'

Це Чому я не можу створити колесо в пітоні? пов'язано, але зауважте, що я встановлюю колесо та модернізую налаштування.

Відповіді:


470

Довелося встановити wheelпакет. Все було в курсі, але все-таки помилка.

pip install wheel

тоді

python setup.py bdist_wheel 

Працювали без питань.


59
"інколи встановити колесо" іноді достатньо
окислювальні роботи

20
Мені це було потрібно pip3 install wheel- адже у мене вже було встановлено колесо, pipале ні pip3.
TetraDev

2
Це спрацювало, але після того, як pip install wheelмені довелося pip uninstall -r requirements.txtі повторитиpip install -r requirements.txt
simple_code

9
can't open file 'setup.py': [Errno 2] No such file or directory
Серін

4
Чи існує спосіб автоматичної установки wheelу чистому віртуальному середовищі? python3 -m venv --system-site-packagesдодасть занадто багато пакетів.
Тобіас Сетте

83
pip install wheel

працював на мене, але ви також можете додати це

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

до setup.py та збережіть собі команду установки pip


2
Тим людям уже встановлено колесо, і досі помилка може додати, setup_requires=['wheel']щоб позбутися цієї помилки
Shankar Pandala

1
Це працює не так, як очікувалося: 1 - спочатку він працює лише тому, що ми встановили за wheelдопомогою pip. Він знову не вдасться при чистому встановленні 2 - у документації написано "Примітка: проекти, перелічені в setup_requires, НЕ будуть автоматично встановлені в системі, де виконується сценарій налаштування."
Тобіас Сетте

Мало того, що @TobiasSette, але і те саме посилання на документацію говорить: "Попередження про використання setup_requires відмовляється на користь PEP-518."
Джефф Райт

72

Січень 2020 року

2 години витрачено даремно.

На AWS Ubuntu 18.04 new machineнижче потрібні установки:

sudo apt-get install gcc libpq-dev -y
sudo apt-get install python-dev  python-pip -y
sudo apt-get install python3-dev python3-pip python3-venv python3-wheel -y
pip3 install wheel

Особливо останній рядок є обов’язковим.
Однак перед необхідними умовами можуть знадобитися 3 рядки.

Сподіваюся, що це допомагає.


2
Рівно через рік, і ти врятував мене дуже багато. Дякую.
DaveTheMinion

7
Я використовував --no-install-recommendsзображення Docker ( DL3015 ) і стикався з цією помилкою, мені потрібно було явно встановити python3-wheel. Дякую!
dimo414

Приємно знати, що це допомогло, моя була у віртуальному середовищі (venv).
Манохар Редді Поредді

1
врятували мені години! Велике спасибі @ManoharReddyPoreddy
Рахул

1
В останньому рядку має бути неоперація, оскільки колесо вже встановлено. Ви це запускали --upgrade? Якщо хтось зможе створити мінімальний Dockerfile, починаючи з Ubuntu 18.04, це був би золотим стандартом.
l0b0

51

Ця проблема пов'язана з:

  • для Python 2.7 встановлюється стара версія pip (6.1.1)
  • кілька копій Python 2.7, встановлених на зображенні Trusty Beta
  • для іншого Python 2.7 використовується інше місце sudo

Все це трохи складніше і краще пояснено тут https://github.com/travis-ci/travis-ci/isissue/4989 .

Моє рішення полягало в установці з користувачем travisзамість sudo:

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

8
У моєму випадку sudo -H pip install setuptools --upgradeвирішили проблему.
Мартін Тома

2
@MartinThoma Дякую за пораду. Це працювало для мене після видачіsudo -H pip install wheel --upgrade
Тарік

Оновлення піп було достатньо в моєму випадку, з 9.0.1 до 20.0.2
Сейф

45

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

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

Про це також йдеться в документації на колеса. https://wheel.readthedocs.io/en/stable/#usage


6
Це працювало для мене. Я використовував distutils замість setuptools для налаштування, і в мене вже був встановлений пакет колеса.
Олексій Кашинський

26

Ця помилка дивна, як і багато запропонованих відповідей і отримали неоднозначні рішення. Я спробував їх, додав. Лише коли я додав, pip install --upgrade pipнарешті, видалив для мене помилку. Але я не маю часу виділяти, що є, тож це просто фій.


23

у моєму випадку версія wheel / pip / setuptools, створена venv, занадто стара. це працює:

venv/bin/pip  install --upgrade pip wheel setuptools

11

Я вже wheelвстановив, тому я спробував видалити та перевстановити, і це вирішило проблему:

pip uninstall wheel
pip install wheel

Дивно ...


FWIW Щойно я зіткнувся з цією помилкою, і для мене спрацювало видалення та повторна установка
Вінсент

8

Моє виправлення було apt install python3-dev


2
Так, і додайте setup_requires=["wheel"]до свого setup.py
Pim

6

У вашому setup.py, якщо у вас є:

from distutils.core import setup

Потім змініть його на

from setuptools import setup

Потім заново створіть свій virtualenv і заново виконайте команду, і вона повинна працювати.


1
Це виправляє мою проблему. Дякую. +1
Хай Ву

5

Спробуйте змінити файл setup.py, імпортуючи налаштування з setuptools замість distutils.core


Працювали для мене! Я мігрував пакет з Python2 на Python3 і, на жаль, не зміг знайти керівництво для цього. Хто б робив те саме і розчарувався з цією проблемою, це може зробити це за вас!
skytreader

4

Я зробив apt-get install python3-devв моєму Ubuntu і додав setup_requires=["wheel"]вsetup.py


11
Це може бути достатньо для запуску pip install wheel.
кап


1

За допомогою Ubuntu 18.04 цю проблему можна вирішити, встановивши python3-wheelпакет.

Зазвичай це встановлюється як залежність від будь-якого пакету Python. Але особливо при створенні зображень контейнерів, з якими ви часто працюєте, --no-install-recommendsі тому вони часто відсутні, і їх потрібно встановити спочатку вручну.


0

Не пов’язаний з Travis CI, але я зіткнувся з подібною проблемою, намагаючись встановити jupyterна свій Mac OSX 10.8.5, і жоден з інших відповідей не допоміг. Проблема була викликана побудовою "колеса" для названого пакету pyzmq, повідомлення про помилки заповнювали сотні сторінок.

Я знайшов рішення, щоб безпосередньо встановити старішу версію цього пакета:

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

Після цього установка jupyterпройшла без помилок.


0

Якщо ви використовуєте setup.cfgфайли, додайте це перед install_requireчастиною:

setup_requires =
    wheel

Приклад проекту setup.cfg:

# setup.py
from setuptools import setup

setup()
# setup.cfg
[metadata]
name = name
version = 0.0.1
description = desc
long_description = file: README.md
long_description_content_type = text/markdown
url = url
author = author
classifiers =
    Programming Language :: Python
    Programming Language :: Python :: 3

[options]
include_package_data = true
packages = find:
setup_requires =
    wheel
install_requires =
    packages
    packages
    packages
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.