5分で終わる解決策
お急ぎの場合は、以下の手順で直接問題を解決できます。
- 公式ダウンロードページからMicrosoft C++ Build Toolsインストーラーを入手します。
vs_buildtools.exeを実行し、**「C++ によるデスクトップ開発」**ワークロードを選択します。- 右側の「オプション」サイドバーを確認します。MSVC v14x ビルドツールとWindows 10 または 11 SDKが選択されていることを確認してください。
- インストールをクリックします。約1.5GB〜2GBのダウンロードが必要で、展開後はディスク容量を約4.5GB消費します。
- ターミナル(コマンドプロンプトまたはPowerShell)を再起動し、再度
pip installを試してください。
なぜこのエラーが発生するのか?
通常、このエラーはpipがライブラリをソースコードからビルドしようとしたときに発生します。多くのPythonパッケージは「Wheel」(.whl)という形式で配布されており、これらはコンパイル済みのバイナリなので即座にインストール可能です。しかし、特定のPythonバージョンやWindowsアーキテクチャ用のwheelが用意されていない場合、pipは元のC++ソースコードにフォールバックします。
numpy、pandas、lxml、pycocotoolsなどのライブラリは、高速化のためにC++を使用しています。そのコードを動作するPythonモジュールに変換するには、システムにコンパイラが必要です。Windowsには標準でコンパイラが付属していません。エラーにある「バージョン 14.0」はVisual C++ 2015のランタイムを指していますが、新しいバージョン(2017、2019、2022)も完全な後方互換性があり、問題なく動作します。
代替の解決策
方法1:まずツールを更新する
数ギガバイトのインストールを始める前に、パッケージングツールが古いかどうかを確認してください。最新バージョンのpipは、既存のwheelを見つける能力が向上しています。以下のコマンドを実行して、すべてを最新の状態にします。
python -m pip install --upgrade pip setuptools wheel
再度インストールを試してください。PyPI上にコンパイル済みのバージョンが存在する場合、pipはそれを取得し、コンパイルの手間を完全にスキップします。
方法2:データサイエンスにはCondaを使用する
コンパイラエラーに悩まされたくない場合は、AnacondaやMinicondaが優れた代替手段になります。ソースからコンパイルすることが多いpipとは異なり、Condaのエコシステムはほぼ排他的にコンパイル済みのバイナリに依存しています。scikit-learnやtwistedのような扱いにくいパッケージも、1つのコマンドでインストールできます。
conda install <package_name>
方法3:コンパイル済みのWheelを手動でダウンロードする
自分でwheelを探すことで、ビルドプロセスを回避できる場合があります。PyPI.orgにアクセスし、パッケージを検索して「Download Files」セクションを確認してください。自分のPythonバージョン(例:Python 3.11ならcp311)とOS(win_amd64)に一致するファイルを探します。.whlファイルをダウンロードし、直接インストールします。
確認
Build Toolsのインストール後、コンパイラを必要とすることで知られるtwistedなどのパッケージで修正をテストします。
pip install twisted
成功すると次のように表示されます:
Successfully installed twisted-22.10.0
トラブルシューティングのコツ
- **再起動は必須:**インストーラーはシステムのPATHを変更します。ターミナルを一度閉じて再度開かない限り、新しい
cl.exeコンパイラは認識されません。 - **Pythonのビット数を確認:**32ビット版のPythonと64ビット版のBuild Toolsを混在させると(あるいはその逆)、不可解なリンクエラーが発生することがあります。特別な理由がない限り、64ビット版のPythonを使用してください。
- **ディスク容量:**Visual Studioのフルスイートは非常に巨大です。コンパイラだけが必要な場合は、「C++ によるデスクトップ開発」ワークロードのみを選択することで、約10GBのスペースを節約できます。

