Python wrapping failures in Windows, Python 3.10, VTK master
For some time I have been having trouble building VTK with Python wrapping in Windows. I have narrowed it down the three specific settings.
Setup: Python 3.10.2, venv, Visual Studio 2022, Qt 6.2.3, latest VTK master.
My usual CMake settings (which work perfectly in Linux), and used to work in Windows are:
CMake Settings
These settings are in addition to the default settings.
CMAKE_BUILD_TYPE Debug
VTK_ALL_NEW_OBJECT_FACTORY ON
VTK_BUILD_TESTING ON
VTK_GROUP_ENABLE_Imaging WANT
VTK_GROUP_ENABLE_Qt WANT
VTK_GROUP_ENABLE_Rendering WANT
VTK_GROUP_ENABLE_StandAlone WANT
VTK_GROUP_ENABLE_Views WANT
VTK_GROUP_ENABLE_Web WANT
VTK_LEGACY_REMOVE ON
VTK_SMP_IMPLEMENTATION_TYPE tbb
VTK_USE_LARGE_DATA ON
VTK_WRAP_PYTHON ON
With these settings wrapping fails in Windows.
If I set:
VTK_GROUP_ENABLE_Qt DEFAULT
VTK_LEGACY_REMOVE OFF
VTK_SMP_IMPLEMENTATION_TYPE sequential
Python wrapping works.
If I individually set the above three options, I get the following:
VTK_GROUP_ENABLE_Qt WANT
Causes this when "import vtk" is invoked in Python on the command line:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:<path>\Kitware\build\VTK\bin\Lib\site-packages\vtk.py", line 31, in <module>
all_m = importlib.import_module('vtkmodules.all')
File "C:\Users\amaclean\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "D:<path>\Kitware\build\VTK\bin\Lib\site-packages\vtkmodules\all.py", line 30, in <module>
from .vtkRenderingQt import *
ImportError: DLL load failed while importing vtkRenderingQt: The specified module could not be found.
VTK_SMP_IMPLEMENTATION_TYPE tbb
Causes this when "import vtk" is invoked in Python on the command line:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:<path>\Kitware\build\VTK\bin\Lib\site-packages\vtk.py", line 31, in <module>
all_m = importlib.import_module('vtkmodules.all')
File "C:\Users\amaclean\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "D:<path>\Kitware\build\VTK\bin\Lib\site-packages\vtkmodules\all.py", line 7, in <module>
from .vtkCommonCore import *
ImportError: DLL load failed while importing vtkCommonCore: The specified module could not be found.
VTK_LEGACY_REMOVE ON
Building CXX object CMakeFiles\vtkIOLSDynaPyth...CMakeFiles\vtkIOLSDynaPython\vtkLSDynaReaderPython.cxx.obj
FAILED: CMakeFiles/vtkIOLSDynaPython.dir/CMakeFiles/vtkIOLSDynaPython/vtkLSDynaReaderPython.cxx.obj
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\cl.exe /nologo /TP -DKISSFFT_DLL_IMPORT=1 -DPYTHON_PACKAGE=\"vtkmodules\" -DVTK_IN_VTK -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -Dkiss_fft_scalar=double -DvtkIOLSDynaPython_EXPORTS -ID:<path>\Kitware\build\VTK\IO\LSDyna -ID:<path>\Kitware\src\VTK\IO\LSDyna -ID:<path>\Kitware\build\VTK\Common\Core -ID:<path>\Kitware\src\VTK\Common\Core -ID:<path>\Kitware\build\VTK\Common\ExecutionModel -ID:<path>\Kitware\src\VTK\Common\ExecutionModel -ID:<path>\Kitware\build\VTK\Common\DataModel -ID:<path>\Kitware\src\VTK\Common\DataModel -ID:<path>\Kitware\build\VTK\Common\Math -ID:<path>\Kitware\src\VTK\Common\Math -ID:<path>\Kitware\build\VTK\ThirdParty\kissfft\vtkkissfft -ID:<path>\Kitware\src\VTK\ThirdParty\kissfft\vtkkissfft -ID:<path>\Kitware\build\VTK\Common\Transforms -ID:<path>\Kitware\src\VTK\Common\Transforms -ID:<path>\Kitware\build\VTK\IO\XMLParser -ID:<path>\Kitware\src\VTK\IO\XMLParser -ID:<path>\Kitware\build\VTK\Wrapping\PythonCore -ID:<path>\Kitware\src\VTK\Wrapping\PythonCore -ID:<path>\Kitware\build\VTK\Utilities\Python -ID:<path>\Kitware\src\VTK\Utilities\Python -external:ID:<path>\Kitware\build\VTK\Utilities\KWIML -external:ID:<path>\Kitware\src\VTK\Utilities\KWIML -external:ID:<path>\Kitware\build\VTK\Utilities\KWSys -external:ID:<path>\Kitware\src\VTK\Utilities\KWSys -external:ID:<path>\Kitware\build\VTK\ThirdParty\kissfft -external:ID:<path>\Kitware\src\VTK\ThirdParty\kissfft -external:IC:\Users\amaclean\AppData\Local\Programs\Python\Python310\include -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /W4 /bigobj /Zi /Ob0 /Od /RTC1 -MDd /showIncludes /FoCMakeFiles\vtkIOLSDynaPython.dir\CMakeFiles\vtkIOLSDynaPython\vtkLSDynaReaderPython.cxx.obj /FdCMakeFiles\vtkIOLSDynaPython.dir\ /FS -c D:<path>\Kitware\build\VTK\CMakeFiles\vtkIOLSDynaPython\vtkLSDynaReaderPython.cxx```