Difference between revisions of "Documentation/Labs/SlicerCondaIntegration"
(Section removed) |
(Section removed) |
||
Line 134: | Line 134: | ||
</pre> | </pre> | ||
− | -- Configuring | + | -- Configuring incomplete |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
=== Windows === | === Windows === | ||
Although the code in https://github.com/jonieva/Slicer/tree/Conda should work with Windows too (using the setting Slicer_USE_CONDA_python=ON), it has not been tested at the moment. | Although the code in https://github.com/jonieva/Slicer/tree/Conda should work with Windows too (using the setting Slicer_USE_CONDA_python=ON), it has not been tested at the moment. |
Revision as of 16:30, 24 February 2015
Home < Documentation < Labs < SlicerCondaIntegrationSlicer currently builds a custom python distribution from source, but not all useful packages are available. But Anaconda provides a set of binaries that might provide a more comprehensive ecosystem.
Before attempting to use the whole Anaconda package, the first approach has been to use Miniconda, which is a reduced version of Anaconda.
Note: the platform used is MacOSX 10.9.5 with XCode 6
Contents
Compile Slicer against miniconda
Mac
- Download the source code hosted in https://github.com/jonieva/Slicer/tree/Conda
- Build (assuming MacOSX 10.9):
cmake \ -DSlicer_USE_CONDA_python:BOOL=ON \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/bin/qmake \ -DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.9 \ -DCMAKE_OSX_SYSROOT:FILEPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk \ -DSlicer_BUILD_CLI:BOOL=OFF \ -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \ ../Slicer
The only changes in the source code are in Superbuild/External_python.cmake and in Superbuild/External_NUMPY.cmake files (in the current version Slicer will use Anaconda Numpy). For the sake of testing, the next Python Conda modules are installed by default: numpy, scikit-learn.
Issues
- libsqlite3.dylib library in miniconda has a conflict with CTK:
Compiling python scripts: CTKScriptingPythonCore Compiling python scripts: ctkSimplePythonShell Linking CXX shared module ../../bin/CTKCorePythonQt.so dyld: Symbol not found: _sqlite3_intarray_bind Referenced from: /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData Expected in: /Users/Jorge/Projects/BWH/Slicer-Superbuild-Conda-Eclipse/python-miniconda/lib/libsqlite3.dylib in /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData dyld: Symbol not found: _sqlite3_intarray_bind Referenced from: /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData Expected in: /Users/Jorge/Projects/BWH/Slicer-Superbuild-Conda-Eclipse/python-miniconda/lib/libsqlite3.dylib in /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
Workaround: delete or rename the file (there is a hack included in the External_python.cmake file to this end).
- When running Slicer.app (not the binary file in Slicer-Superbuild-Conda/Slicer-build) the program is not using Miniconda, but the System Python, so it doesn't find the right libraries:
Python 2.7.5 (default, Mar 9 2014, 22:15:05) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin >>> Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/Jorge/Projects/BWH/Slicer-Superbuild-Conda/Slicer-build/lib/Slicer-4.4/qt-scripted-modules/SimpleFilters.py", line 3, in <module> import SimpleITK as sitk File "/Library/Python/2.7/site-packages/SimpleITK-0.9.0.dev656-py2.7-macosx-10.9-intel.egg/SimpleITK/__init__.py", line 1, in <module> from .SimpleITK import * File "/Library/Python/2.7/site-packages/SimpleITK-0.9.0.dev656-py2.7-macosx-10.9-intel.egg/SimpleITK/SimpleITK.py", line 28, in <module> _SimpleITK = swig_import_helper() File "/Library/Python/2.7/site-packages/SimpleITK-0.9.0.dev656-py2.7-macosx-10.9-intel.egg/SimpleITK/SimpleITK.py", line 24, in swig_import_helper _mod = imp.load_module('_SimpleITK', fp, pathname, description) ImportError: dlopen(/Library/Python/2.7/site-packages/SimpleITK-0.9.0.dev656-py2.7-macosx-10.9-intel.egg/SimpleITK/_SimpleITK.so, 2): Library not loaded: libSimpleITKBasicFilters12-0.9.1.dylib Referenced from: /Library/Python/2.7/site-packages/SimpleITK-0.9.0.dev656-py2.7-macosx-10.9-intel.egg/SimpleITK/_SimpleITK.so Reason: image not found
So, in order that the system works, Slicer must be started from a terminal running the file Slicer-Superbuild-Conda/Slicer-build/Slicer
Linux
- Download the source code in https://github.com/jonieva/Slicer/tree/Conda
- Build Slicer normally, except for the setting Slicer_USE_CONDA_python. Example:
cmake \ '''-DSlicer_USE_CONDA_python:BOOL=ON''' \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/bin/qmake \ -DSlicer_BUILD_CLI:BOOL=OFF \ -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \ ../Slicer
Different approach
The following worked for me (Steve Pieper, 2015-02-04) using ubuntu 13.10 and miniconda 3.8.4-py27_0
cmake \ -DCMAKE_BUILD_TYPE:STRING=Debug \ -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/bin/qmake \ -DPYTHON_EXECUTABLE:FILEPATH=${HOME}/miniconda/bin/python \ -DPYTHON_INCLUDE_DIR:PATH=${HOME}/miniconda/include/python2.7 \ -DPYTHON_LIBRARY:FILEPATH=${HOME}/miniconda/lib/libpython2.7.so \ -DSlicer_BUILD_CLI:BOOL=OFF \ -DSlicer_USE_PYTHONQT_WITH_TCL:BOOL=OFF \ ../Slicer make -j20 export PYTHONHOME=${USER}/miniconda ./Slicer-build/Slicer
But after it ran there was slicer's build of numpy inside miniconda, so I needed to do this:
bin/conda uninstall numpy bin/conda install numpy
I tried using this:
-DSlicer_USE_SYSTEM_NUMPY:BOOL=ON
but got this error:
... -- SuperBuild - CTKAPPLAUNCHER[OK] (SYSTEM) CMake Error at SuperBuild/External_CTKAPPLAUNCHER.cmake:21 (message): Enabling Slicer_USE_SYSTEM_CTKAPPLAUNCHER is not supported ! Call Stack (most recent call first): CMake/ExternalProjectDependency.cmake:561 (include) SuperBuild/External_python.cmake:21 (ExternalProject_Include_Dependencies) CMake/ExternalProjectDependency.cmake:561 (include) SuperBuild/External_VTKv6.cmake:11 (ExternalProject_Include_Dependencies) CMake/ExternalProjectDependency.cmake:561 (include) SuperBuild/External_teem.cmake:11 (ExternalProject_Include_Dependencies) CMake/ExternalProjectDependency.cmake:561 (include) CMake/ExternalProjectDependency.cmake:607 (ExternalProject_Include_Dependencies) SuperBuild.cmake:320 (ExternalProject_Include_Dependencies) CMakeLists.txt:599 (include)
-- Configuring incomplete
Windows
Although the code in https://github.com/jonieva/Slicer/tree/Conda should work with Windows too (using the setting Slicer_USE_CONDA_python=ON), it has not been tested at the moment.