以下のVagrant環境にdlibをインストールする場合のtips
Vagrant環境
Ubuntu 14.04 LTS (64bit.ver)
pyenv (python3.5.1 or anaconda3-4.0.0)
dlibインストール時に発生する問題
pip経由にてdlibをビルド・インストールしようとすると、コンパイル時にエラー発生してこける。
# pipにて、dlibをビルド・インストールするコマンド
pip install dlib
Exception: Compilation failed (return status=1) が発生する場合
これはPython3を64bit環境で使用する際に発生する現象とのこと。
まずエラーメッセージに下記の内容が表示される場合には、
再配置 R_X86_64_32S (`_Py_NotImplementedStruct' に対する) は
共有オブジェクト作成時には使用できません。-fPIC を付けて再コンパイルしてください。
pyenvでpython3をビルド・インストールする際に、CFLAGS="-fPIC"と
オプションを下記のように設定してやればOK
# オプション CFLAGS="-fPIC" をつけて再ビルド・インストール
pyenv uninstall 3.5.1
CFLAGS="-fPIC" pyenv install 3.5.1
virtual memory exhaustedが発生する場合
vagrant環境では初期設定を変更しない限り環境用に512MB分のメモリが確保されるが、
ビルド時にメモリ不足のため、以下のエラーメッセージ出力と共にビルドプロセスが途中で中止されてしまう。
virtual memory exhausted: メモリを確保できません
そこでVagrantfileに以下の内容を追記して、vagrant環境用に確保するメモリ量を増加させる必要がある。
Vagrantfile
# 確保するメモリ量を2018MBに変更
config.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 2018]
end
※ なお上記2つのエラーはdlibに限らず、pipでライブラリをビルド・インストール時に発生する可能性もある。
参考サイト
PYENVでのPYTHONで-FPICを付けて再コンパイル
Python3 + mod_wsig3.3 + Apache2.2 でHelloWorldをブラウザ表示
Vagrantfileのテンプレート