概要
Pythonの setup.py で bdist_wheel コマンドを使ってパッケージをビルドする際、特にTravis CIで「invalid command ‘bdist_wheel’」というエラーが発生することがあります。このエラーは、Python環境に wheel パッケージがインストールされていない場合や、setuptools のバージョンが古い場合に起こります。このブログでは、エラーの原因とその解決策を詳しく説明します。
bdist_wheel とは
bdist_wheel は、PythonパッケージをWheel形式でビルドするコマンドです。Wheelは、Pythonのパッケージの標準的な配布形式であり、効率的なインストールが可能です。しかし、Wheelパッケージをビルドするには、wheel モジュールがインストールされている必要があります。
エラーの原因
このエラーが発生する主な原因は以下の通りです。
wheelパッケージの未インストール
Python環境にwheelパッケージがインストールされていない場合、bdist_wheelコマンドを実行できません。特にCI環境(例: Travis CI)では、必要なパッケージがデフォルトでインストールされていないことが多いため、このエラーが頻繁に発生します。pipやsetuptoolsのバージョンが古い
古いバージョンのpipやsetuptoolsを使っている場合、bdist_wheelが正しく認識されないことがあります。これにより、エラーが発生します。
解決策
wheel のインストール
最も一般的な解決方法は、wheel パッケージを手動でインストールすることです。以下のコマンドを実行することで、wheel をインストールできます。
pip install wheel
または、setup.py に setup_requires=['wheel'] を追加することで、ビルド時に自動的に wheel がインストールされるように設定できます。
from setuptools import setup
setup(
setup_requires=['wheel'],
# 他の設定...
)
pip と setuptools のアップグレード
古いバージョンの pip や setuptools が原因の場合、これらを最新バージョンにアップグレードすることが必要です。
pip install --upgrade pip setuptools
CI環境(例: Travis CI)では、このコマンドをビルドの前に追加することで、パッケージの最新バージョンを使用できます。
Travis CI設定の修正
Travis CIの設定ファイル(.travis.yml)に以下のような行を追加することで、ビルド時に wheel と必要な依存関係をインストールできます。
before_install:
- pip install --upgrade pip setuptools wheel
まとめ
Travis CIやその他の環境で bdist_wheel エラーが発生する場合、wheel パッケージのインストールや pip のアップグレードが必要です。これらのステップを実行することで、Pythonパッケージを正しくビルドし、エラーを防ぐことができます。setup.py に setup_requires を追加する方法も、Wheelパッケージの依存関係を自動的に解決するための有効な手段です。