はじめに
PythonのAnnoyというパッケージをインストールしようとした際に、以下の表示が出てインストールできなかったので対処した際のメモ。
- exit code 1
- error: Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”
実行環境
- Windows11(勝手にアップデートされてた。。)
- Python 3.9.7 (Anaconda使用)
Annoyとは
Approximate Nearest Neighbors Oh Yeahの略。近傍探索に用いられるアルゴリズム。
Spotifyが作成、実装がしやすいので人気が出たらしい。
https://github.com/spotify/annoy
参考:
近傍探索ライブラリ「Annoy」のコード詳解
近似最近傍探索の最前線
近傍探索とは
d次元のデータ$x_0=(a_1,a_2,...a_d)$に対し、同じようなN個のd次元データ$x_1,x_2,...x_N$から、近いデータを取ってくる手法。
短く言えば、N個のベクトルのうち、与えられたクエリと距離の近いベクトルを取ってくること。
Annoyをインストールしてみる
コンソールでpip install annoy
を実行する。
エラーでインストールに失敗。
対処法1:Visual C++ Build Toolsをインストール
Microsoft Visual C++ 14.0 is required. Get it with “Build Tools for Visual Studio”
とのことなので、言われた通りVisual C++ Build Toolsをダウンロードする。
参考サイトの通り、「Build Tools for Visual Studio 2019」と、「MSCV v140」にチェックを入れてインストール。(要再起動)
対処法2:古いバージョンのPythonでインストールする
Visual C++ Build Toolsをインストールすると3GB以上になる。インストールしたくない場合、古いバージョンのPythonが入っている状態で、py -3.7 -m pip install
のように別のバージョンを指定してインストールする。
参考:
pip installでエラーになりインストールできない場合(Windows)の原因4を参照
古いバージョンのPyhonフォルダにwheelファイルを入れてpipでインストールするという方法もあるらしいのだが、AnnoyのダウンロードページのBuilt DistributionのwheelファイルはMacOSのみのため使えない。
参考:
"ERROR: Command errored out with exit status 1"と出たときの解決策 - エンジニア くま Blog
ちなみに、wheelファイルの名前には"cp37"が含まれているので、少なくともPython3.7であればインストールは可能だろうと判断できる。
(cp=CPython≒Pythonのバージョンを表す)