使用VTK的Python可执行文件... pyinstaller,py2exe,cx_freeze等

时间:2014-02-17 17:44:17

标签: python pyqt py2exe vtk pyinstaller

我使用pyqt在python中构建了一个gui,它导入了VTK。我没有运气得到任何py2exe,pyinstaller cx_freeze等与它一起使用...我得到一个错误说下面的内容使用pyinstaller:

vtk.__helper.LinkError: No module named vtkFilteringPythonSIP

我已经设法使用pyinstaller制作不包含vtk代码的工作可执行文件,所以我现在倾向于此,但是如果有人可以帮助我编写代码,这将使这个:http://www.vtk.org/Wiki/VTK/Examples/Python/Widgets/EmbedPyQt代码工作作为一个可执行文件然后我将永远感激,但它已经完成。我已经尝试将它抱怨的文件添加到pyinstaller钩子但仍然没有运气。是否有旧的/开发版本已修复此错误?虽然我找到了同一条船上的人,但在信息高速公路上找不到任何解决方案。我正在使用最新版本的Python(X,Y)。

2 个答案:

答案 0 :(得分:5)

如果遇到任何人遇到同样的问题,我通过执行以下操作设法让我的代码正常工作:

  • 在pyinstaller hooks文件夹中,将'hook-vtkpython.py'重命名为'hook-vtk.py'

然后我在运行pyinstaller生成的可执行文件时遇到了一个不同的错误,即无法找到名为QtOpenGL的模块。这发生在名为__helper.py的site-packages中的vtk文件夹中的文件中。我只是评论了最后两行去掉它的牙齿。

我还改变了我的代码,以便不是导入所有的vtk而是导入我需要的位。不确定是否只需要这些步骤中的第一步或两个步骤来解决我担心的问题,但是他们/它确实解决了这个问题。问题出现在Python(x,y)2.7.5.1中。您的里程可能会有所不同。

答案 1 :(得分:0)

我没有足够的代表来评论,所以我只是回应。我想补充一点,在 2021 年,这是一个可行的解决方案。 我尝试构建一个 Qt-vtk-UI 并努力构建它几个小时。感谢 Peter Greaves,重命名钩子文件对我有用。

我使用的是带有 Python 3.6.12、PyQt5 (5.12.2) 和 vtk 9.0.1 的虚拟 conda 环境。使用默认安装运行 pyinstaller 会引发错误,例如“vtk 没有属性 vtk.qt”或“vtkmodules.all 没有属性 vtkmodules.all.qt”,这是在导入 QVTKRenderWindowInteractor 时查找的。 我尝试使用像 here 这样的隐藏导入,但仅凭这一点并不能解决问题。与重命名 vtk-hook 的组合有效。