Jupyter notebook で cctbx などを使う

DIALS を bootstrap.py からビルドしたあと、base/bin/pip を使って Jupyter notebook をインストールしても cctbx を import できない。環境変数を設定する wrapper となっている dials.python などと違い、PYTHONPATH や LD_LIBRARY_PATH が設定されていないようだ。

次のように設定して解決した。

jupyter notebook --generate-config

として、設定ファイル ~/.jupyter/jupyter_notebook_config.py を生成し、そこに以下のような記述を付け足す。何を足したらいいかは、dials.python の中で当該環境変数を調べ、Jupyter notebook 上での値と比べれば分かる。

import os
os.environ['PYTHONPATH'] = "/opt/dials/modules/cctbx_project:/opt/dials/modules:/opt/dials/modules/cctbx_project/boost_adaptbx:/opt/dials/modules/cctbx_project/libtbx/pythonpath:/opt/dials/build/lib:" + os.environ['PYTHONPATH']
os.environ['LD_LIBRARY_PATH'] = "/opt/dials/build/lib:/opt/dials/base/lib64:/opt/dials/base/lib:" + os.environ['LD_LIBRARY_PATH']