日々精進

新しく学んだことを書き留めていきます

conda env create ~でdlibをinstallすると「CMake must be installed to build the following extensions: dlib」エラー

dlibのsetup.pyの中にsubprocess.check_output(['cmake', '--version'])を実行しているところがあり、cmakeへのパスが通ってないためcmakeというファイルが見付からないことが原因。

github.com

subprocess.check_outputの引数にcmakeのパスを設定すれば直せるが、setup.pyはいじれないので困った。。

だめだった解決策は以下。

  • conda env createで読み込むyamlファイルにcmakeを追加
  • cmakeコマンドをwindows向けインストーラを使ってinstallし、システム環境変数のPathにcmakeのパスを設定する
  • ユーザ環境変数のPATHにcmakeのパスを設定
  • set PATH=...でcmakeのパスを設定

最終的にcondaのbase環境でpip install cmakeを実行すると直った。

conda env create~のログを見ると、以下のコマンドを実行してpipパッケージをinstallしている。この時のconda環境はどうやらbase環境であるっぽい。なのでpipパッケージのインストールに必要なpipやcondaパッケージがあればbase環境にインストールすればよい。

['C:\Users\username\AppData\Local\Continuum\miniconda3\envs\my_env\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\my_pj\condaenv.3df17y9s.requirements.txt']

pip install cmakeの後pip install dlibを実行するとエラーは出ない。なのでuser siteにcmakeをinstallしても解決するかも知れないが試していない

参考: www.kkaneko.jp