takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

Boost.PythonをAnaconda3の環境でビルド

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

が作成されていることも確認できました。