5

我有一个我没有编写的 python 脚本,它利用了 vtk 模块。它适用于我的旧 iMac 和我的 Linux 机器。在安装了 OS X Mavericks 的 Macbook Pro 上尝试它,我在渲染过程中遇到了 seg 错误。我已经追踪到调用 vtkRender() 方法的错误,该方法导致脚本因 seg 错误 11 而崩溃。我真的不知道如何进一步找出错误的确切原因(例如,如何我使用 pdb 进入方法调用?),有什么想法吗?

一个最小的程序崩溃如下:

Enthought Canopy Python 2.7.3 | 64-bit | (default, Aug  8 2013, 05:37:06) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
>>> test = vtk.vtkRenderer()
>>> test.Render()
Segmentation fault: 11

更新:我在 VirtualBox 上安装了 Ubuntu,并在上面的示例中遇到了相同的 seg 错误,但是我使用 vtk 模块的 python 脚本工作得很好。

所以这似乎是使用 EPD 和 OS X Mavericks 提供的 VTK 包的问题。知道如何解决这个问题吗?我删除了 VTK 的所有痕迹并尝试从源代码安装,但在这种情况下我遇到了各种问题,只是让 VTK 导入。

更新:

通过在脚本中的 VTK 代码中添加一些额外的样板,我可以让它再次工作。确实非常奇怪的行为。在具有相同代码和库的 Ubuntu 中工作正常,但在 Mac OS X 上,除非我添加一些 .Initialize() 方法调用和其他方法调用到渲染对象,否则它会出现故障。

4

2 回答 2

0

当我安装 OS X Mavericks 时,我认为一切都通过了安装而没有被破坏。我的python安装虽然坏了。安装 Python 2.7.6 的候选版本为我解决了这个问题。还有一个补丁可以修复 Mavericks 上 2.7.5 的 segfault 问题。

于 2013-11-14T16:14:27.730 回答
0

您应该创建一个渲染窗口并在渲染之前将渲染器添加到其中。此外,调用 render - windowRender()方法,而不是渲染器的方法。

import vtk
rr = vtkRenderer()
rw = vtkRenderWindow()
rw.AddRenderer(rr)
rw.Render()
于 2016-08-03T13:45:08.300 回答