Simple ITK のインストール(Pythonで使うため)

Simple ITK(http://www.simpleitk.org/)を使うことになったので、Ubuntuにインストールする。なんかチュートリアルもあるらしい(http://www.simpleitk.org/SimpleITK/help/tutorials.html)。

ここ(https://itk.org/Wiki/SimpleITK/GettingStarted#Build_It_Yourself)を参考に自分でビルドする。

$ git clone http://itk.org/SimpleITK.git
$ mkdir SimpleITK-build
$ cd SimpleITK-build
$ cmake ../SimpleITK/SuperBuild
$ make -j12 %スレッドでコンパイル

とするもcmakeで以下のエラー。

CMake Error at /homes/Username/hogehoge/simpleITKsource/SimpleITK/CMake/ExternalData.cmake:1122 (message):


  Object MD5=2e115fe26e435e33b0d5c022e4490567 not found at:

    https://placid.nlm.nih.gov/api/rest?method=midas.bitstream.download&checksum=2e115fe26e435e33b0d5c022e4490567&algorithm=MD5 ("unsupported protocol")
    https://simpleitk.github.io/SimpleITKExternalData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol")
    https://data.kitware.com:443/api/v1/file/hashsum/MD5/2e115fe26e435e33b0d5c022e4490567/download ("unsupported protocol")
    https://midas3.kitware.com/midas/api/rest?method=midas.bitstream.download&checksum=2e115fe26e435e33b0d5c022e4490567&algorithm=MD5 ("unsupported protocol")
    https://insightsoftwareconsortium.github.io/ITKTestingData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol")
    https://itk.org/files/ExternalData/MD5/2e115fe26e435e33b0d5c022e4490567 ("unsupported protocol")


make[2]: *** [ExternalData/.ExternalSource/lua-5.1.5.tar.gz-hash-stamp] エラー 1
make[1]: *** [CMakeFiles/SuperBuildSimpleITKSourceReal.dir/all] エラー 2
make: *** [all] エラー 2

cmakeのバージョンがなんか古い(3.2.x。要求は3.3以上)ので、cmake3.5.2でcmake し直したところ、エラー回避できてビルドが続いた(長い・・・)。cmakeは配布されているバイナリをダウンロードして使用。

(追記:このエラーについての説明があった。SSLの問題なのでSSL対応しているバイナリ配布版を使えと書いてある。 https://itk.org/Wiki/SimpleITK/FAQ#Is_my_compiler_supported.3F)


しかし、javadocに関してエラーを吐いて終了。なぜ・・・と思ってエラーログ見たり検索するも謎。OpenJDKが悪さをしているのではないかと思い、Oracle JREをインストール(ここ参考 http://www.linuxmania.jp/apt-install-java.html)。バージョンとサポートを確認したところ、Java6はサポートされてないとのこと。Oracle JRE 8をインストール。


んで、makeし直すもまたエラー。

Linking CXX executable ../../bin/SimpleITKUnitTestDriver5
[ 83%] Built target SimpleITKUnitTestDriver6
[ 83%] Built target SimpleITKUnitTestDriver1
[ 83%] Built target SimpleITKUnitTestDriver0
[ 83%] Built target SimpleITKUnitTestDriver2
[ 83%] Built target SimpleITKUnitTestDriver4
[ 83%] Built target SimpleITKUnitTestDriver5
[ 83%] Built target SimpleITKUnitTestDriver3
Linking CXX shared module lib/SimpleITK.so
Linking CXX shared module _SimpleITK.so
[ 83%] Built target SimpleITKLuaModule_LUA
[ 83%] Built target SimpleITK_PYTHON
make[3]: *** [all] エラー 2
make[2]: *** [SimpleITK-prefix/src/SimpleITK-stamp/SimpleITK-build] エラー 2
make[1]: *** [CMakeFiles/SimpleITK.dir/all] エラー 2
make: *** [all] エラー 2

ほわー、だわ。エラー吐いている部分でPython用のWrapperを生成しているぽくて、ここのビルドが終わらないとどうしようもない。
しかたがないので

& make 2>&1 | tee make.log

としてログファイルに標準出力と標準エラーを書き出し。


と思ったら、SimpleITK-buildがSimpleITKディレクトリの中になぜかあったのが問題ぽい・・・。つまり

$ cd SimpleITK
$ mkdir SimpleITK-build
$ cd SimpleITK-build
$ cmake ../SuperBuild
$ make -j12 %スレッドでコンパイル

という処理をしていてなんかおかしくなっていたっぽい(アホか)。



というわけで、cmakeとOracke JREを入れておけば普通にビルドできたという・・・。


.bashrcかなんかに以下追加。

export LD_LIBRARY_PATH=$/homes/Username/hogehoge/simpleITKsource//SimpleITK-build/lib


root権限で以下

 # cd SimpleITK-build/Wrapping/Python
 # python Packaging/setup.py install

とすればよいと書いてあったが、上記1行目のディレクトリがない・・・。参考に指定ページの該当部分をよく見ると、

Alternatively, a Python virtual environment can be created and the distribution installed there.

とか書いてあった。つまり、SimpleITK-build/virtualenv/setup.pyができていたという。ところが、こいつを管理者権限で実行してもpermission deniedとなるし、virtualenvを起動させようにもこのvirtualenvディレクトリ下のbinディレクトリにはactivateが存在しない。。。

で、もう直接SimpleITK.pyをimportとしてやれと思い、ビルド用ディレクトリをあさってみたところ

SimpleITK-build/SimpleITK-build/Wrapping/Python

にSimpleITK.pyがあるのを発見。

import sys
sys.path.append('/hogehoge/SimpleITK-build/SimpleITK-build/Wrapping/Python')
import SimpleITK as sitk

で読み込めた。試しに関数をコールしたら大丈夫だったので、これで使える・・・。



と上記にいろいろビルドする方法を書き散らしたものの、バイナリ配布使うのが一番手っ取り早いよね、って思ったけどなぜか以下でインストールできひん。

$ pip install SimpleITK