Python 3.13 で wheel が無く、ソースビルドに落ちるケース
Python の環境構築中に、scipy のインストールでエラーになることがあります。
特に新しい Python バージョンを使っている場合、依存パッケージの対応状況によっては、pip が事前ビルド済みの wheel を取得できず、ソースビルドへ切り替わって失敗することがあります。
この記事では、この種のエラーが起きる典型的な原因と、実際に取りやすい対処法を整理します。
よくある症状
環境構築スクリプトや pip install -r requirements.txt 実行中に、次のような流れで失敗します。
- 仮想環境の作成は成功する
- 依存パッケージのインストール中に
scipyで停止する Preparing metadata (pyproject.toml)やmeson setupの段階でエラーになる- ログ内に
gfortranやifortなどの Fortran コンパイラが見つからないというメッセージが出る
この場合、単純に「pip の不具合」ではなく、依存パッケージのバージョンと Python 本体の組み合わせが噛み合っていないことが多いです。
原因
主な原因は、利用している Python のバージョンに対して、指定している数値計算系ライブラリが古いことです。
たとえば以下のような状況です。
- Python は 3.13
- しかし
scipy、numpy、pandas、matplotlibなどは、ひとつ前の世代のバージョンで固定されている - その結果、対象環境向けの wheel が見つからない
pipがソースビルドを試みる- SciPy 系ではビルド時に Fortran コンパイラが必要になり、ローカル環境に無いため失敗する
重要:
表面的には「Fortran コンパイラが無い」エラーに見えても、根本原因は Python バージョンに対して依存パッケージが古いこと です。
なぜソースビルドで失敗するのか
Python のパッケージには、あらかじめビルド済みの wheel が配布されていることがあります。wheel が使える場合、利用者はコンパイラを意識せずにインストールできます。
しかし、次のような場合は wheel が取得できません。
- 新しい Python バージョンにまだ対応していない
- OS やアーキテクチャ向けの wheel が用意されていない
- 固定したバージョンが古く、配布対象外になっている
wheel が無いと pip はソースからビルドしようとします。その際、SciPy のようなライブラリでは C/C++ だけでなく Fortran コンパイラが必要になることがあり、Windows 環境では特にここで詰まりやすくなります。
対処法
1. 依存パッケージを Python のバージョンに合わせて更新する
もっとも自然な解決策はこれです。
requirements.txt などで固定している以下のようなライブラリを、利用中の Python バージョンに対応したものへ更新します。
numpyscipypandasmatplotlib
数値計算系ライブラリは相互依存も強いため、一部だけを上げるのではなく、関連する主要パッケージをまとめて見直すのが安全です。
2. Python のバージョンを下げる
既存プロジェクトで依存関係をあまり動かしたくない場合は、Python 側を下げる方法もあります。
たとえば、プロジェクトが少し前の依存構成で安定しているなら、Python 3.11 や 3.12 に切り替えることで、既存の requirements.txt のまま通ることがあります。
これは次のようなケースで有効です。
- 本番環境の Python バージョンが既に決まっている
- 依存更新による副作用を避けたい
- 一時的にまず動かしたい
3. Fortran コンパイラを導入してソースビルドできるようにする
理論上は可能ですが、一般的には優先度は低めです。
理由は次の通りです。
- 開発環境構築の手間が大きい
- OS ごとの差異が大きい
- チーム開発では再現性が落ちやすい
- 根本的には「wheel が無い」状態を回避できていない
そのため、特別な事情がなければ、まずは依存更新か Python バージョン調整を優先するのが無難です。
実務上のおすすめ方針
現場で対応するなら、次の順序がわかりやすいです。
パターンA: 新しい Python を使いたい場合
- Python のバージョンはそのまま
requirements.txtの数値計算系依存を対応版へ更新- 仮想環境を作り直して再インストール
パターンB: 既存依存をできるだけ変えたくない場合
- Python を 3.11 または 3.12 など安定版に戻す
- 既存の依存定義のまま再構築する
再実行時の注意点
一度インストールに失敗した仮想環境は、中途半端な状態になっていることがあります。そのため、修正後は仮想環境を作り直すのが確実です。
たとえば次のような流れです。
既存の venv を削除
新しく仮想環境を作成
pip を更新
requirements.txt を再インストール
こうしておくと、前回失敗時のキャッシュや不整合の影響を受けにくくなります。
補足:
失敗したのが依存解決やビルド段階だけなら、そのまま再実行で通る場合もあります。ただし、バージョン修正を何度か繰り返した後は、仮想環境を作り直したほうが切り分けしやすくなります。
まとめ
Python 環境構築中に SciPy のインストールで失敗する場合、原因は単なるコンパイラ不足ではなく、Python と依存パッケージのバージョン不整合であることが少なくありません。
特に新しい Python バージョンでは、次の流れが起こりがちです。
- 古い
scipyなどでは wheel が無い pipがソースビルドに落ちる- Fortran コンパイラ不足で失敗する
対処としては、次のどちらかが基本になります。
- 依存パッケージを Python 対応版へ更新する
- Python のバージョンを安定している世代へ下げる
環境構築エラーに見えても、実際には「依存バージョンの設計」の問題であることが多いため、ログの最後だけでなく、どのパッケージがどの Python 版に対応しているかを見るのが解決の近道です。

コメント