概要

Pythonsetup.pybdist_wheel コマンドを使ってパッケージをビルドする際、特にTravis CIで「invalid command ‘bdist_wheel’」というエラーが発生することがあります。このエラーは、Python環境に wheel パッケージがインストールされていない場合や、setuptools のバージョンが古い場合に起こります。このブログでは、エラーの原因とその解決策を詳しく説明します。

bdist_wheel とは

bdist_wheel は、PythonパッケージをWheel形式でビルドするコマンドです。Wheelは、Pythonのパッケージの標準的な配布形式であり、効率的なインストールが可能です。しかし、Wheelパッケージをビルドするには、wheel モジュールがインストールされている必要があります。

エラーの原因

このエラーが発生する主な原因は以下の通りです。

  1. wheel パッケージの未インストール
    Python環境に wheel パッケージがインストールされていない場合、bdist_wheel コマンドを実行できません。特にCI環境(例: Travis CI)では、必要なパッケージがデフォルトでインストールされていないことが多いため、このエラーが頻繁に発生します。
  2. pipsetuptools のバージョンが古い
    古いバージョンの pipsetuptools を使っている場合、bdist_wheel が正しく認識されないことがあります。これにより、エラーが発生します。

解決策

wheel のインストール

最も一般的な解決方法は、wheel パッケージを手動でインストールすることです。以下のコマンドを実行することで、wheel をインストールできます。

pip install wheel

または、setup.pysetup_requires=['wheel'] を追加することで、ビルド時に自動的に wheel がインストールされるように設定できます。

from setuptools import setup
setup(
    setup_requires=['wheel'],
    # 他の設定...
)

pipsetuptools のアップグレード

古いバージョンの pipsetuptools が原因の場合、これらを最新バージョンにアップグレードすることが必要です。

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.pysetup_requires を追加する方法も、Wheelパッケージの依存関係を自動的に解決するための有効な手段です。