[vtkusers] Python Bindings on OSX?
Sensei
senseiwa at gmail.com
Wed Jul 21 08:11:39 EDT 2010
On Jul 19, 2010, at 3:21pm, David Gobbi wrote:
> I'll leave the RPATH questions for someone else, but I can answer the
> libvtkRenderingPythonTkWidgets.dylib questions. This library is
> needed so that VTK can use Python's Tkinter module, which is needed
> for MayaVi.
>
> On OS X 10.6, Tkinter (and Tk) use Cocoa (on OS X 10.5, they use
> Carbon). VTK did not support building
> libvtkRenderingPythonTkWidgets.dylib with Cocoa until VTK 5.6. So if
> you build VTK 5.4 on OS X 10.6, you won't get the
> libvtkRenderingPythonTkWidgets.
Thanks for the pointer! However, I cannot run MayaVi because the libvtkRenderingPythonTkWidgets.dylib is still missing (VTK 5.6).
My configuration for VTK is BUILD_SHARED_LIBS=ON, VTK_WRAP_PYTHON=ON, VTK_WRAP_TCL=ON, VTK_USE_RPATH=ON, but then again:
$ mayavi
Traceback (most recent call last):
File "/usr/local/bin/mayavi", line 317, in <module>
app = MayaViTkGUI (r)
File "/Library/Python/2.6/site-packages/mayavi/Main.py", line 1009, in __init__
self.renwin = Misc.RenderWindow.RenderWindow (self.renwin_frame)
File "/Library/Python/2.6/site-packages/mayavi/Misc/RenderWindow.py", line 89, in __init__
height=505)
File "/Library/Python/2.6/site-packages/VTK-5.6.0-py2.6.egg/vtk/tk/vtkTkRenderWidget.py", line 81, in __init__
vtkLoadPythonTkWidgets(master.tk)
File "/Library/Python/2.6/site-packages/VTK-5.6.0-py2.6.egg/vtk/tk/vtkLoadPythonTkWidgets.py", line 69, in vtkLoadPythonTkWidgets
interp.call('load', filename)
_tkinter.TclError: dlopen(libvtkRenderingPythonTkWidgets.dylib, 10): image not found
And surprisingly, the very same library you pointed out is NOT installed:
$ find /Library/Python -name libvtkRenderingPythonTkWidgets.dylib
(NO OUTPUT)
Although that library IS present in the VTK build dir:
$ ls bin/libvtkRenderingPythonTkWidgets.*
bin/libvtkRenderingPythonTkWidgets.5.6.0.dylib*
bin/libvtkRenderingPythonTkWidgets.5.6.dylib@
bin/libvtkRenderingPythonTkWidgets.dylib@
The funny stuff is this: without RPATH, I get a library path problem (image of python-common not found), with RPATH on I get this Tk problem (even with VTK 5.6), and probably I miss the point of relative paths, since the python common library has absolute paths in it:
$ otool -L /Library/Python/2.6/site-packages/VTK-5.6.0-py2.6.egg/vtk/libvtkCommonPython.so
/Library/Python/2.6/site-packages/VTK-5.6.0-py2.6.egg/vtk/libvtkCommonPython.so:
/Users/sensei/Downloads/VTK/bin/libvtkCommonPythonD.5.6.dylib (compatibility version 5.6.0, current version 5.6.0)
/System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
/Users/sensei/Downloads/VTK/bin/libvtkCommon.5.6.dylib (compatibility version 5.6.0, current version 5.6.0)
/Users/sensei/Downloads/VTK/bin/libvtksys.5.6.dylib (compatibility version 5.6.0, current version 5.6.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
I am puzzled... I am attaching some parts of CMakeCache.txt, maybe I am missing some obvious point!
Cheers!
//Build Verdict with shared libraries.
BUILD_SHARED_LIBS:BOOL=ON
//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=/usr/local
//The product will be built against the headers and libraries located
// inside the indicated SDK.
CMAKE_OSX_SYSROOT:PATH=/Developer/SDKs/MacOSX10.6.sdk
//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=VTK
//Add module vtkChartsPython
PYTHON_ENABLE_MODULE_vtkChartsPython:BOOL=ON
//Add module vtkCommonPython
PYTHON_ENABLE_MODULE_vtkCommonPython:BOOL=ON
//Add module vtkFilteringPython
PYTHON_ENABLE_MODULE_vtkFilteringPython:BOOL=ON
//Add module vtkGenericFilteringPython
PYTHON_ENABLE_MODULE_vtkGenericFilteringPython:BOOL=ON
//Add module vtkGeovisPython
PYTHON_ENABLE_MODULE_vtkGeovisPython:BOOL=ON
//Add module vtkGraphicsPython
PYTHON_ENABLE_MODULE_vtkGraphicsPython:BOOL=ON
//Add module vtkHybridPython
PYTHON_ENABLE_MODULE_vtkHybridPython:BOOL=ON
//Add module vtkIOPython
PYTHON_ENABLE_MODULE_vtkIOPython:BOOL=ON
//Add module vtkImagingPython
PYTHON_ENABLE_MODULE_vtkImagingPython:BOOL=ON
//Add module vtkInfovisPython
PYTHON_ENABLE_MODULE_vtkInfovisPython:BOOL=ON
//Add module vtkRenderingPython
PYTHON_ENABLE_MODULE_vtkRenderingPython:BOOL=ON
//Add module vtkViewsPython
PYTHON_ENABLE_MODULE_vtkViewsPython:BOOL=ON
//Add module vtkVolumeRenderingPython
PYTHON_ENABLE_MODULE_vtkVolumeRenderingPython:BOOL=ON
//Add module vtkWidgetsPython
PYTHON_ENABLE_MODULE_vtkWidgetsPython:BOOL=ON
//Add module vtkChartsPython shared
PYTHON_MODULE_vtkChartsPython_BUILD_SHARED:BOOL=ON
//Add module vtkCommonPython shared
PYTHON_MODULE_vtkCommonPython_BUILD_SHARED:BOOL=ON
//Add module vtkFilteringPython shared
PYTHON_MODULE_vtkFilteringPython_BUILD_SHARED:BOOL=ON
//Add module vtkGenericFilteringPython shared
PYTHON_MODULE_vtkGenericFilteringPython_BUILD_SHARED:BOOL=ON
//Add module vtkGeovisPython shared
PYTHON_MODULE_vtkGeovisPython_BUILD_SHARED:BOOL=ON
//Add module vtkGraphicsPython shared
PYTHON_MODULE_vtkGraphicsPython_BUILD_SHARED:BOOL=ON
//Add module vtkHybridPython shared
PYTHON_MODULE_vtkHybridPython_BUILD_SHARED:BOOL=ON
//Add module vtkIOPython shared
PYTHON_MODULE_vtkIOPython_BUILD_SHARED:BOOL=ON
//Add module vtkImagingPython shared
PYTHON_MODULE_vtkImagingPython_BUILD_SHARED:BOOL=ON
//Add module vtkInfovisPython shared
PYTHON_MODULE_vtkInfovisPython_BUILD_SHARED:BOOL=ON
//Add module vtkRenderingPython shared
PYTHON_MODULE_vtkRenderingPython_BUILD_SHARED:BOOL=ON
//Add module vtkViewsPython shared
PYTHON_MODULE_vtkViewsPython_BUILD_SHARED:BOOL=ON
//Add module vtkVolumeRenderingPython shared
PYTHON_MODULE_vtkVolumeRenderingPython_BUILD_SHARED:BOOL=ON
//Add module vtkWidgetsPython shared
PYTHON_MODULE_vtkWidgetsPython_BUILD_SHARED:BOOL=ON
//Build classes using Carbon API.
VTK_USE_CARBON:BOOL=OFF
//Build pixel and vertex shader support for Cg.
VTK_USE_CG_SHADERS:BOOL=OFF
//Build VTK chart support (OpenGL based)
VTK_USE_CHARTS:BOOL=ON
//Build classes using Cocoa API.
VTK_USE_COCOA:BOOL=ON
//Build the vtkRendering kit. Needed for displaying data or using
// widgets.
VTK_USE_RENDERING:BOOL=ON
//Build shared libraries with rpath. This makes it easy to run
// executables from the build tree when using shared libraries,
// but removes install support.
VTK_USE_RPATH:BOOL=ON
//Build VTK with Tk support
VTK_USE_TK:BOOL=ON
//Wrap VTK classes into the Python language.
VTK_WRAP_PYTHON:BOOL=ON
//Wrap VTK classes into the TCL language.
VTK_WRAP_TCL:BOOL=ON
More information about the vtkusers
mailing list