読者です 読者をやめる 読者になる 読者になる

Tamflexの貯蔵庫

やる気のない備忘録

anaconda3でgraph_toolを使う

ubuntuでgraph_tool(graph-tool: Efficent network analysis with python)を使うときには、以下のリンクに従ってレポジトリを登録したあと、以下のコマンドで簡単にインストールできる。

sudo apt install python-graph-tool # python2 version
sudo apt install python3-graph-tool # python3 version

git.skewed.de

けれどもanaconda3で使うときはパスが通っていないためimport graph_toolが使えなくて困る。
で無理やりgraph_toolが入っているパスを以下のように通してあげると…

import sys
sys.path.append('/usr/lib/python3/dist-packages')

以下のようなエラーが出てきてしまう。

ImportError: /path/to/file/anaconda3/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /usr/lib/python3/dist-packages/graph_tool/libgraph_tool_core.so)

どうやら共有ライブラリlibgomp.so.1のバージョンが違うらしい。だったら共有ファイルを無理やりシステムのものを使うようにリンクを通してあげれば良い。

cd /path/to/file/anaconda3/lib
mv libgomp.so.1 libgomp.so.1.bak
ln -s /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0 libgomp.so.1

同様に共有ファイルlibstdc++.soについても同じように以下のようなエラーが出る

ImportError: /path/to/file/anaconda3/lib/python3.5/site-packages/scipy/special/../../../../libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/python3/dist-packages/graph_tool/libgraph_tool_core.so)

だから同じようにリンクを作る。

mv libstdc++.so libstdc++.so.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22 libstdc++.so
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22 libstdc++.so.6

自分の環境ではこれでエラーが出なくなり正常にimportされるようになった。
あとはpthファイルを以下のように作れば冒頭のように一々import sysをしなくて済む。

cd /path/to/file/anaconda3/lib/python3.5/site-packages
touch graph_tool.pth
echo /usr/lib/python3/dist-packages > graph_tool.pth