Skip to content

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バージョン環境で発生しやすい問題です。

主な原因

このエラーの主な原因は以下の通りです:

  1. ビルドツールの不足 - コンパイルに必要な開発ツールやライブラリがインストールされていない
  2. Pythonバージョンの互換性問題 - 新しいPythonバージョンに対応したバイナリが提供されていない
  3. システム依存ライブラリの不足 - SciPyが依存する数学ライブラリ(OpenBLASなど)がない
  4. pipやsetuptoolsの古いバージョン - ビルドシステムの互換性問題

解決方法

方法1: ビルドツールのインストール(Linux/Ubuntu)

bash
# 開発ツールと依存ライブラリをインストール
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
bash
# 開発ツールグループをインストール
sudo dnf group install -y "Development Tools"
sudo dnf install -y python3-devel openblas-devel lapack-devel

方法2: pipとビルドツールの更新

bash
# pip、setuptools、wheelを最新版に更新
pip install --upgrade pip setuptools wheel

# 再度scipyをインストール尝试
pip install scipy

方法3: Pythonバージョンの調整

WARNING

新しいPythonバージョン(3.10以降)では、すべてのパッケージがすぐに互換性を持つわけではありません。問題が解決しない場合は、少し古い安定版Python(3.8または3.9)を使用することを検討してください。

bash
# pyenvを使用したPythonバージョン切り替え例
pyenv install 3.9.7
pyenv global 3.9.7

方法4: Conda/Mambaの使用

特に科学計算系パッケージでは、Condaパッケージマネージャーを使用すると依存関係の問題を回避できる場合があります。

bash
# condaでscipyをインストール
conda install scipy

# またはconda-forgeチャンネルから
conda install -c conda-forge scipy
bash
# mambaはcondaより高速です
mamba install scipy

方法5: システム固有の解決策

macOS (Apple Silicon M1/M2 チップ)

bash
# 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が必要な場合があります。

  1. Visual Studio Build Toolsをインストール
  2. 「C++によるデスクトップ開発」ワークロードを選択
  3. 管理者としてコマンドプロンプトを実行し、インストール尝试

方法6: プリコンパイル済みホイールの使用

bash
# 信頼できるミラーからプリコンパイル済みパッケージをインストール
pip install scipy -i https://pypi.mirrors.ustc.edu.cn/simple/

# または公式PyPIの特定バージョン
pip install scipy==1.9.0

トラブルシューティングのヒント

  1. エラーログの確認:エラーメッセージの詳細を確認し、特定の依存関係やコンパイラエラーを探す
  2. 環境のクリーンアップ:仮想環境を作成し、クリーンな状態で再尝试
  3. 段階的なインストール:まずnumpyをインストールしてからscipyをインストール
bash
# 仮想環境の作成と使用
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バージョンのダウングレードを検討してください。

科学計算パッケージのインストールでは、公式ドキュメントやコミュニティの情報を参照し、ご自身の環境に合った適切なインストール方法を選択することが重要です。