[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