Anaconda3を入れた状態でBoost.Pythonのビルドに手間取ったのでメモ。
"conda install boost"ではなく、わけあってBoostをソースからビルドしました。
作業環境は以下の通り
- Ubuntu 16.0.4
- Anaconda3-5.1.0
- Boost 1.66.0
ここで、Anaconda3は
/home/takmin/anaconda3
に既にインストールされているものとします。
Boostをダウンロード
$ wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.tar.gz
以下のサイトに従ってBoostを解凍してコンフィグレーション
http://www.boost.org/doc/libs/1_66_0/more/getting_started/unix-variants.html
$ tar zxvf boost_1_66_0.tar.gz $ cd boost_1_66_0 $ ./bootstrap.sh --with-python=/home/takmin/anaconda3/bin/python --with-ptyhon-root=/home/takmin/anaconda3
ここまではOK。次にb2コマンドでビルドしようとするとエラーが出ます。
$ ./b2 In file included from ./boost/python/detail/prefix.hpp:13:0, from ./boost/python/list.hpp:8, from libs/python/src/list.cpp:5: ./boost/python/detail/wrap_python.hpp:50:23: fatal error: pyconfig.h: そのようなファイルやディレクトリはありません compilation terminated.
おそらく
~/anaconda3/include
へのパスは設定されても
~/anaconda3/include/python3.6m
へのパスが設定されていないためと思われます。
(OpenCV Pythonのビルドも同じところでハマった)
そこで、/home/takminの下にuser-config.jamというファイルを作成し、以下のように内容を編集します。
user-config.jam
using python : : /home/takmin/anaconda3/bin/python : /home/takmin/anaconda3/include/python3.6m /home/takmin/anaconda3/include : /home/takmin/anaconda3/lib ;
ここで"~/anaconda3/include/python3.6m"のように書くとビルドに失敗します。
$ ./b2 $ sudo ./b2 install
で無事ビルドとインストールに成功し、
/usr/local/lib/libboost_python3.so
が作成されていることも確認できました。