[vtkusers] python (2.7) problems compiling with MSVC 2010 64bit

Dominik Szczerba dominik at itis.ethz.ch
Wed Jun 8 15:19:12 EDT 2011


Hi David,

I tried editing http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ but
was denied the editing rights. Below my proposed addition (as bullet
1.6) which I would have found useful when resolving the issue.

Regards,
Dominik

=== Installation ===

In order to use the python enabled VTK you need to resolve the
required DLL dependencies, i.e., you have to make sure all DLLs/shared
objects can find each other. For simple setups "vtkpython" might work,
but in case you compiled VTK with external dependencies (e.g. QT)
chances are it will not, as there is no easy way such dependencies be
resolved automatically. There are two scenarios covered here.

==== System installed python ====

On Windows, you need to make sure that the path containing python.exe
and python.dll is in the PATH variable. You can set it system wide in
the system advanced settings, or from a terminal like this:

PATH=%PATH%;C:\python2.7.1\bin

On a recent linux distribution with a system installed python a
similar step should not be needed, but just in case you have installed
your own, you would need an equivalent like:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pack/python-2.7.1/bin

==== System independent python ====

Suppose you want to have several independent python versions along
with their packages and you do not want to register any of them with
the system. In such a case, for the best compatibility and
consistency, you should compile python from source yourself, then
assemble the build into a packaged folder containing three
sub-folders: bin, include and lib. "bin" should contain python
executable and the dlls/shared objects, "include" the header files and
"lib" a subfolder site-packages. Now all there is to do is to naively
copy all dependent dll's/so's from the vtk build bin folder into the
custom python package's bin folder, and the vtk python package
subfolder from Wrapping/Python/vtk into  lib/site-packages. Now double
clicking python executable should bring up a python console, from
which you should be able to do things like:

from vtk import *
image = vtkImageData()
print image



On Wed, Jun 8, 2011 at 7:41 PM, David Gobbi <david.gobbi at gmail.com> wrote:
> Hi Dominik,
>
> It is a given that when using python.exe, either the DLLs have to be
> copied into the path, or the PATH and PYTHONPATH variables have
> to be set.  So I'll just leave that part of the question aside, hopefully
> someone from Kitware who deals with the VTK installation process can
> answer.
>
> The vtkpython executable is a different story, though, because it is
> supposed to find the VTK dlls automatically.  It does have some
> limitations: it cannot know all of the library dependencies, so it
> cannot be expected to know where to find the Qt DLLs, and these
> will have to be in the PATH.  When you used the dependency walker,
> did you find any dependencies that were unusual or unexpected?
>
> If you put together a wiki page, that would definitely be useful for
> other users, I'd be willing to review it for you.  You can also look
> at VTK/Wrapping/Python/README.txt to see if it has relevant
> information.
>
>  - David
>
>
> On Wed, Jun 8, 2011 at 10:59 AM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>> I finally got 2.7 to work. Please review, if this is not dirty hacking
>> I can commit a small wiki page with a HOWTO.
>>
>> Both python26 and python27 will work if ALL required DLL's will be
>> copied over to python\bin. Which ones I required can be debugged with
>> the dependency walker. This includes, e.g., the Qt DLL's, because I
>> was compiling with Qt GUI support. Probably compiling without Qt, or
>> appending the missing DLL paths to PATH would work too, but I have not
>> tested it.
>>
>> I do not see how executing 'vtkpython' can work in such cases. I found
>> no documentation about possible setup scenarios and required system
>> variables.
>>
>> Best regards,
>> Dominik
>>
>> On Wed, Jun 8, 2011 at 5:52 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>> I can't speak to why python 2.7 would be different from python 2.6,
>>> because I have never tried it... hopefully someone else can answer
>>> that question.
>>>
>>>  - David
>>>
>>>
>>> On Wed, Jun 8, 2011 at 7:08 AM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>>>> I have now manually copied everything from vtk's build
>>>> bin\RelWithDebInfo folder to python's bin folder and I have manually
>>>> copied Wrapping\Python\vtk to python's lib\site-packages folder.
>>>> Such treatment seems to work for python 2.6.7 (= "import vtk" works),
>>>> but does not work for python 2.7.1. Note, I have no python/vtk in the
>>>> system path and pythonhome and pythonpath are not set.
>>>>
>>>> Am I hacking and this will not work the next release, or is the right
>>>> way to go? Why would 2.7 not work on Windows? Works on linux all
>>>> right.
>>>>
>>>> Thanks for any more hints,
>>>> Dominik
>>>>
>>>>
>>>> On Wed, Jun 8, 2011 at 12:59 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>>>>> Hi David,
>>>>>
>>>>> I have tried python 2.6.7 with the same failure. Is this a known issue
>>>>> for Windows? My configure settings are pretty straight forward: using
>>>>> shared libs, paths to python/include/lib, enable wrapping, disable TK,
>>>>> did I forget anything?
>>>>>
>>>>> Is there somewhere a comprehensive information what should reside / be
>>>>> copied where such that I can use vtk with python? I never saw one,
>>>>> even under http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ
>>>>> I do not (in fact, can not) use vtkpython (that does not work for now
>>>>> anyway). I need to create a custom python+vtk environment, totally
>>>>> unregistered with the system (so I can have multiple versions).
>>>>>
>>>>> Many thanks and best regards,
>>>>> Dominik
>>>>>
>>>>> On Tue, Jun 7, 2011 at 11:46 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>>>>> Hi Dominik,
>>>>>>
>>>>>> It might be as simple as cmake not properly detecting python, I know that
>>>>>> it was unable to detect python-2.7 until very recently, in fact even my
>>>>>> copy of cmake-2.8.2 is missing the bits that it needs to find python-2.7.
>>>>>>
>>>>>> Take a look through your CMakeCache.txt file to make sure that all of the
>>>>>> python-related variables are set.
>>>>>>
>>>>>> Also, now that you know for certain that it is a path-related issue, make
>>>>>> sure to clear the PYTHONHOME variable or it will get you into trouble
>>>>>> in the future.
>>>>>>
>>>>>>  - David
>>>>>>
>>>>>>
>>>>>> On Tue, Jun 7, 2011 at 3:36 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>>>>>>> Hi David,
>>>>>>>
>>>>>>> Thanks, indeed, there was no PYTHONHOME set. But setting it brings me
>>>>>>> only one step further. The next is the error when calling "import
>>>>>>> vtk". See the error at the end. I saw a similar thread when you wrote
>>>>>>> it is about mixing release and debug for python. It is not the case
>>>>>>> here, both python and vtk is self compiled with the same compiler
>>>>>>> settings (Release). I blind tried various combinations of PATH and
>>>>>>> PYTHONPATH to no avail. I will be happy about some more ideas to try.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Dominik
>>>>>>>
>>>>>>> On Tue, Jun 7, 2011 at 11:26 PM, David Gobbi <david.gobbi at gmail.com> wrote:
>>>>>>>> Hi Dominik,
>>>>>>>>
>>>>>>>> The "site" module is the first to be imported, so if it is missing,
>>>>>>>> then the "PYTHONHOME" (or equivalent) is not set or is incorrect and
>>>>>>>> python is unable to find its own modules.
>>>>>>>>
>>>>>>>> If you set PYTHONHOME manually (i.e. as an environment variable) to
>>>>>>>> the directory where python-2.7 resides, then I am guessing that these
>>>>>>>> tests will pass.
>>>>>>>>
>>>>>>>> So... the next question is, why is this happening?  Evidently the
>>>>>>>> vtkpython executable is missing some critical information that allows
>>>>>>>> it to find the python-2.7 directory on its own.  The relevant code in
>>>>>>>> VTK is Wrapping/Python/vtkPythonAppInit.cxx
>>>>>>>>
>>>>>>>> None of the dashboard machines seem to use python-2.7.
>>>>>>>>
>>>>>>>>  - David
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jun 7, 2011 at 2:44 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>>>>>>>>> Below some output from testing log. I get exactly the same error
>>>>>>>>> (ImportError: No module named site) by just invoking vtkpython from
>>>>>>>>> command line.
>>>>>>>>>
>>>>>>>>> ----------------------------------------------------------
>>>>>>>>> 59/251 Testing: PythonSmokePython-image
>>>>>>>>> 59/251 Test: PythonSmokePython-image
>>>>>>>>> Command: "E:/build/vtk-5.6.1/bin/Release/vtkpython.exe"
>>>>>>>>> "E:/pack/vtk-5.6.1/Common/Testing/Python/PythonSmoke.py"
>>>>>>>>> Directory: E:/build/vtk-5.6.1/Common/Testing/Python
>>>>>>>>> "PythonSmokePython-image" start time: Jun 07 22:27 W. Europe Daylight Time
>>>>>>>>> Output:
>>>>>>>>> ----------------------------------------------------------
>>>>>>>>> ImportError: No module named site
>>>>>>>>> <end of output>
>>>>>>>>> Test time =   2.22 sec
>>>>>>>>> ----------------------------------------------------------
>>>>>>>>> Test Failed.
>>>>>>>>> "PythonSmokePython-image" end time: Jun 07 22:27 W. Europe Daylight Time
>>>>>>>>> "PythonSmokePython-image" time elapsed: 00:00:02
>>>>>>>>> ----------------------------------------------------------
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jun 7, 2011 at 10:37 PM, Dominik Szczerba <dominik at itis.ethz.ch> wrote:
>>>>>>>>>> I have compiled python 2.7 in Release mode on MSVC 2010 64bit. I have
>>>>>>>>>> built vtk-5.6.1 against it (with wrapping enabled). However, I get the
>>>>>>>>>> below errors when testing the build.
>>>>>>>>>> My setup is rather standard, I was therefore wondering if there could
>>>>>>>>>> be something obviously wrong, or 2.7 is simply not yet supported.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Dominik
>>>>>>>>>>
>>>>>>>>>> E:\build\vtk-5.6.1>ctest -R Python
>>>>>>>>>> Test project E:/build/vtk-5.6.1
>>>>>>>>>>    Start  59: PythonSmokePython-image
>>>>>>>>>> 1/6 Test  #59: PythonSmokePython-image ......................***Failed    2.22 s
>>>>>>>>>> ec
>>>>>>>>>>    Start  60: TestWeakrefPython-image
>>>>>>>>>> 2/6 Test  #60: TestWeakrefPython-image ......................***Failed    0.09 s
>>>>>>>>>> ec
>>>>>>>>>>    Start  61: TestNumpySupportPython-image
>>>>>>>>>> 3/6 Test  #61: TestNumpySupportPython-image .................***Failed    0.09 s
>>>>>>>>>> ec
>>>>>>>>>>    Start  62: TestTerminationCrashPython-image
>>>>>>>>>> 4/6 Test  #62: TestTerminationCrashPython-image .............***Failed    0.08 s
>>>>>>>>>> ec
>>>>>>>>>>    Start  63: TestExecuteMethodFinalizeCrashPython-image
>>>>>>>>>> 5/6 Test  #63: TestExecuteMethodFinalizeCrashPython-image ...***Failed    0.09 s
>>>>>>>>>> ec
>>>>>>>>>>    Start 237: kMeansDistanceCalculatorPython
>>>>>>>>>> 6/6 Test #237: kMeansDistanceCalculatorPython ...............***Failed    0.08 s
>>>>>>>>>> ec
>>>>>>>>>>
>>>>>>>>>> 0% tests passed, 6 tests failed out of 6
>>>>>>>>>>
>>>>>>>>>> Total Test time (real) =   3.50 sec
>>>>>>>>>>
>>>>>>>>>> The following tests FAILED:
>>>>>>>>>>         59 - PythonSmokePython-image (Failed)
>>>>>>>>>>         60 - TestWeakrefPython-image (Failed)
>>>>>>>>>>         61 - TestNumpySupportPython-image (Failed)
>>>>>>>>>>         62 - TestTerminationCrashPython-image (Failed)
>>>>>>>>>>         63 - TestExecuteMethodFinalizeCrashPython-image (Failed)
>>>>>>>>>>        237 - kMeansDistanceCalculatorPython (Failed)
>>>>>>>>>> Errors while running CTest
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Powered by www.kitware.com
>>>>>>>>>
>>>>>>>>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>>>>>>>>
>>>>>>>>> Please keep messages on-topic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTK_FAQ
>>>>>>>>>
>>>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>>>> http://www.vtk.org/mailman/listinfo/vtkusers
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>



More information about the vtkusers mailing list