WrappersCompilation
Compiling RTK Python wrappers
This little guide will show you how to compile and set up ITK and RTK wrappers on your system. First thing first, copy, paste and adapt the following Bash script to your ITK directory:
set -e
set -x
SRCBUILDDIR=lin64
CUDA=ON
NTHREADS=12 # Number of cores on your computer
SCRIPT_PATH=$(realpath $(dirname $0))
BUILD_DIR=$SCRIPT_PATH/${SRCBUILDDIR}-PythonWrapping
INSTALL_PATH=${BUILD_DIR}-install
# ITK
mkdir -p $BUILD_DIR
cd $BUILD_DIR
cmake $SCRIPT_PATH/src -DITK_LEGACY_SILENT=ON -DBUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTING=OFF -DITK_WRAP_PYTHON=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH # <---
make -j${NTHREADS} install
# RTK
mkdir -p $SCRIPT_PATH/../../RTK/${SRCBUILDDIR}-PythonWrapping # <---
cd $SCRIPT_PATH/../../RTK/${SRCBUILDDIR}-PythonWrapping # <---
cmake ../RTK -DITK_DIR=$BUILD_DIR -DBUILD_SHARED_LIBS=OFF -DRTK_BUILD_APPLICATIONS=OFF -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DRTK_USE_CUDA=${CUDA} ${CMAKE_OPTIONS} # <---
make -j${NTHREADS} install
Stuff to take care of:
- Set an appropriate number of threads in order to speed things up (set it up equal to the number of CPU cores your machine has);
- Add
optirun
if you need it; - Adapt the paths to ITK and RTK according to your own set up (lines marked with
# <---
).
Note that this script requires additional adaptations in order to function properly on Macs. The compilation should take about 1 hour or so. Upon completion, let's add the newly compiled wrappers to Python's path. Open up the site-packages
directory of your Python installation. For instance,
cd ~/miniconda3/lib/python3.7/site-packages/
First, uninstall any ITK or RTK wrappers you might already have installed, if you have any. You can either use pip-autoremove
(pip install pip-autoremove
) or juste delete everything ITK or RTK related.
Now, create a file named WrapITK.pth
and write in it the full path to the site-package
's folder of your compiled Python wrappers. Do not use relative paths (for example using ~
), use system's absolute path. For instance,
/export/home/acoussat/Software/RTK/ITK/lin64-PythonWrapping-install/lib/python3.7/site-packages
That should do the trick. Now, let's check that everything works. Open up a Python interactive console, for instance using IPython:
ipython
and run the two following commands:
import itk
from itk import RTK
They should complete without errors. You can now use ITK and RTK through Python.
If you do have errors...
...well, happy debugging! ITK can sometimes appear as not found if you're using some special kind of Python console (for instance, Spyder's console). The first thing to check is whether Python's path contains the correct path to your ITK and RTK compiled wrappers. In order to check it, you can simply print Python's path:
import sys
sys.path
If the required path is contained in the list, well, you're out of luck. Check that ITK and RTK compilation correctly finishes, and I wish you the best of luck. If it is not, try adding it manually:
sys.path.append("path/to/your/compilation/site-packages") # for instance, /export/home/acoussat/Software/RTK/ITK/lin64-PythonWrapping-install/lib/python3.7/site-packages
Now, try again importing ITK and RTK:
import itk
from itk import RTK
If it now works, your Python's path is not correctly configured: check that your .pth
has been correctly created. However, if it does not work, it might be because you're not running the Python version in which you set up your wrappers. It can occur if, for instance, you have both a system-wide and a miniconda
Python installed. Therefore, check up that the Python which is called when you run python
in a terminal actually runs the Python for which you set up the wrappers (in which you created the file WrapITK.pth
).