PEP 517 エラー「Could not build wheels for scipy」の解決方法
問題の概要
Pythonの科学計算ライブラリであるScipyをインストールしようとした際に、以下のエラーが発生する場合があります:
ERROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly
このエラーは、PEP 517(Pythonのビルドシステム標準)に基づいてホイール(wheel)ファイルのビルドに失敗したことを示しています。特に、ARMアーキテクチャ(Raspberry PiやARMベースのシングルボードコンピュータなど)や新しいPythonバージョン環境で発生しやすい問題です。
主な原因
このエラーの主な原因は以下の通りです:
- ビルドツールの不足 - コンパイルに必要な開発ツールやライブラリがインストールされていない
- Pythonバージョンの互換性問題 - 新しいPythonバージョンに対応したバイナリが提供されていない
- システム依存ライブラリの不足 - SciPyが依存する数学ライブラリ(OpenBLASなど)がない
- pipやsetuptoolsの古いバージョン - ビルドシステムの互換性問題
解決方法
方法1: ビルドツールのインストール(Linux/Ubuntu)
# 開発ツールと依存ライブラリをインストール
sudo apt-get update
sudo apt-get install -y build-essential python3-dev python3-pip
sudo apt-get install -y libopenblas-dev liblapack-dev pkg-config
# 開発ツールグループをインストール
sudo dnf group install -y "Development Tools"
sudo dnf install -y python3-devel openblas-devel lapack-devel
方法2: pipとビルドツールの更新
# pip、setuptools、wheelを最新版に更新
pip install --upgrade pip setuptools wheel
# 再度scipyをインストール尝试
pip install scipy
方法3: Pythonバージョンの調整
WARNING
新しいPythonバージョン(3.10以降)では、すべてのパッケージがすぐに互換性を持つわけではありません。問題が解決しない場合は、少し古い安定版Python(3.8または3.9)を使用することを検討してください。
# pyenvを使用したPythonバージョン切り替え例
pyenv install 3.9.7
pyenv global 3.9.7
方法4: Conda/Mambaの使用
特に科学計算系パッケージでは、Condaパッケージマネージャーを使用すると依存関係の問題を回避できる場合があります。
# condaでscipyをインストール
conda install scipy
# またはconda-forgeチャンネルから
conda install -c conda-forge scipy
# mambaはcondaより高速です
mamba install scipy
方法5: システム固有の解決策
macOS (Apple Silicon M1/M2 チップ)
# Rosetta 2経由でx86_64環境を使用
arch -x86_64 zsh
# HomebrewでOpenBLASをインストール
brew install openblas
export OPENBLAS=$(brew --prefix openblas)
# 必要なビルド依存関係をインストール
pip install Cython pybind11 pythran
# scipyをインストール
pip install scipy
Windows
INFO
Windowsでは、ビルドツールとしてVisual Studio Build Toolsが必要な場合があります。
- Visual Studio Build Toolsをインストール
- 「C++によるデスクトップ開発」ワークロードを選択
- 管理者としてコマンドプロンプトを実行し、インストール尝试
方法6: プリコンパイル済みホイールの使用
# 信頼できるミラーからプリコンパイル済みパッケージをインストール
pip install scipy -i https://pypi.mirrors.ustc.edu.cn/simple/
# または公式PyPIの特定バージョン
pip install scipy==1.9.0
トラブルシューティングのヒント
- エラーログの確認:エラーメッセージの詳細を確認し、特定の依存関係やコンパイラエラーを探す
- 環境のクリーンアップ:仮想環境を作成し、クリーンな状態で再尝试
- 段階的なインストール:まずnumpyをインストールしてからscipyをインストール
# 仮想環境の作成と使用
python -m venv scipy-env
source scipy-env/bin/activate # Linux/macOS
# scipy-env\Scripts\activate # Windows
# まずnumpyをインストール
pip install numpy
# その後scipyをインストール
pip install scipy
まとめ
「Could not build wheels for scipy」エラーは、主にビルド環境の不備やバージョン互換性の問題によって発生します。システムの開発ツールをインストールし、pipを最新版に更新することで大多数のケースが解決します。それでも問題が解決しない場合は、Condaの使用やPythonバージョンのダウングレードを検討してください。
科学計算パッケージのインストールでは、公式ドキュメントやコミュニティの情報を参照し、ご自身の環境に合った適切なインストール方法を選択することが重要です。