📑

cibuildwheelでLinux向けのwheelビルド時につまずいた点と解決策

2025/02/22に公開

cibuildwheelでLinux向けのwheelビルド時につまずいた点と解決策

問題点: 依存関係のエラー

cibuildwheelを使用してLinux向けのwheelをビルドする際、依存関係のエラーに悩まされました。

最初、CIホスト上で必要なパッケージをインストールしていましたが、ビルド時に依存関係のエラーが解消されず、試行錯誤を繰り返しました。

重要なポイント: コンテナ内での処理

cibuildwheelはビルドのために独自のコンテナを作成して処理を行います。そのため、CIホスト上でいくら依存パッケージをインストールしても、ビルドには反映されません。

この事実を認識するのに1日以上を費やしてしまいました。

解決策: before-allオプションの活用

cibuildwheelでは、before-all オプションを使用することで、ビルドが開始される前にコンテナ内で必要なパッケージをインストールできます。

CIBW_BEFORE_ALL_LINUX="yum install -y 必要なパッケージ名"

または、pyproject.tomlで以下のように設定を記述する

[tool.cibuildwheel.linux]
before-all = "yum install -y 必要なパッケージ名"

この設定を追加することで、依存関係のエラーを解消し、正常にwheelのビルドができるようになりました。

まとめ

  • cibuildwheelは コンテナ内 でビルドを行う。

  • CIホストにパッケージをインストールしても無駄。

  • CIBW_BEFORE_ALL_LINUX を活用して、コンテナ内で依存関係を解決すると、スムーズにビルドができる。

cibuildwheelを使う際には、この点に注意して効率的にビルドを進めましょう。

Discussion