python setup.pyがTravis CIで無効なコマンド「bdist_wheel」を言っているのはなぜですか?


330

私のPythonパッケージには、setup.pyUbuntu 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をアップグレードしています。

回答:


470

wheelパッケージをインストールする必要がありました。すべてが最新でしたが、まだエラーが発生しています。

pip install wheel

その後

python setup.py bdist_wheel 

問題なく働いた。


59
「pipインストールホイール」で十分な場合があります
oxidworks

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追加するパッケージが多すぎます。
Tobias Sette、

83
pip install wheel

私のために働いたが、これを追加することもできます

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

setup.pyに保存し、pip installコマンドを保存します


2
これらの人々はすでにホイールを取り付けており、それでもエラーが発生する場合setup_requires=['wheel']は、このエラーを取り除くために追加することができます
Shankar Pandala

1
これは期待どおりに機能しませんwheel。1- 最初は、pipでインストールしたためにのみ機能します。クリーンインストール2で再び失敗します- ドキュメントには「注:setup_requiresにリストされているプロジェクトは、セットアップスクリプトが実行されているシステムに自動的にインストールされません。」
Tobias Sette、

それだけでなく、@ TobiasSetteだけでなく、同じドキュメントリンクには、「PEP-518を優先して、setup_requiresを使用した警告は推奨されません」と書かれています。
ジェフライト

73

2020年1月

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
ちょうど1年後、あなたは私をかなりの苦労から救いました。ありがとうございました。
DaveTheMinion

7
--no-install-recommendsDockerイメージ(DL3015)で使用していて、このエラーが発生したため、明示的にインストールする必要がありましたpython3-wheel。ありがとう!
dimo414

それが役に立ったことを知って良かった、私は仮想環境(venv)にいました。
Manohar Reddy Poreddy

1
時間を節約できました!本当にありがとう@ManoharReddyPoreddy
Rahul

1
ホイールはすでにインストールされているため、最後の行は何もしないはずです。で実行しました--upgradeか?誰かがUbuntu 18.04から始まる最小限のDockerfileを作成できる場合、それがゴールドスタンダードになります。
l0b0

51

この問題の原因は次のとおりです。

  • Python 2.7にインストールされている古いバージョンのpip(6.1.1)
  • Trusty BetaイメージにインストールされたPython 2.7の複数のコピー
  • 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

8
私の場合、sudo -H pip install setuptools --upgrade問題は解決しました。
マーティントーマ2017年

2
@MartinThomaあなたの先端をありがとう。発行後に機能しましたsudo -H pip install wheel --upgrade
Tarik

私の場合は9.0.1から20.0.2にpipをアップグレードするだけで十分でした
Seyf

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
これでうまくいきました。セットアップにsetuptoolsの代わりにdistutilsを使用していて、wheelパッケージがすでにインストールされていました。
Alex Kaszynski、

26

このエラーは、多くの提案された回答と混合ソリューションを得たので奇妙です。私はそれらを試して、追加しました。pip install --upgrade pip最後に追加したのは、最終的にエラーを削除したときだけでした。しかし、私はどちらを分離する時間がないので、これはただのフィです。


23

私の場合、envによって作成されたwheel / pip / setuptoolsのバージョンが古すぎます。これは機能します:

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

11

私はすでにwheelインストールしたので、アンインストールして再インストールしようとしました、そしてそれは問題を修正しました:

pip uninstall wheel
pip install wheel

奇妙な...


FWIWこのエラーが発生し、アンインストールと再インストールがうまくいった
Vincent


6

あなたにはsetup.py、あなたが持っている場合:

from distutils.core import setup

次に、それを

from setuptools import setup

次に、virtualenvを再作成してコマンドを再実行すると、コマンドが機能するはずです。


1
これは私の問題を修正します。ありがとうございました。+1
ハイヴ

5

distutils.coreの代わりにsetuptoolsからセットアップをインポートして、setup.pyファイルを変更してみてください


私のために働いた!パッケージをPython2からPython3に移行していましたが、残念ながらそのためのガイドが見つかりませんでした。同じことをしていてこの問題に不満を感じる人は誰でも、あなたのためにそれをするかもしれません!
skytreader

4

私はapt-get install python3-devUbuntuで行い、追加setup_requires=["wheel"]しましたsetup.py


11
実行するのに十分かもしれませんpip install wheel
KAP


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.