Mayavi: 在 OS X 10.11 上保存 PDF 文件会导致生成损坏的 zip 文件

创建于 2016-06-21  ·  7评论  ·  资料来源: enthought/mayavi

通过 Conda 安装 Mayavi,在 Jupyter Notebook 中运行以下脚本:

%gui qt
从 mayavi 导入 mlab
mlab.test_flow()

然后在 GUI 中单击以保存场景,如果我将文件输出设置为“snapshot.pdf”,则会在打开笔记本的终端中收到一条错误消息:

2016-06-21 12:03:43.383 python[44385:6652218] modalSession 已过早退出 - 检查对 endModalSession 的可重入调用:

并且没有创建 PDF 文件 - 剩下一个名为 snapshot.pdf.gz 的文件。

我在他这里工作的环境:
环境文件

所有7条评论

此过程中涉及许多模块,从错误输出中不清楚失败的原因是什么。

你能在不使用笔记本的情况下从普通的 ipython 提示重现这个问题吗?
您可以使用 WX 重现错误吗?

您还应该运行测试(这可能有助于缩小问题的范围)

# probably need to run these from site-packages
python -um nose.core -v tvtk
python -um nose.core -v mayavi

你好,我们又见面了,

运行 tvtk 测试时,出现以下错误:

错误:测试是否所有具有 MinValue/MaxValue 的属性都是特征

回溯(最近一次调用最后一次):
文件“/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py”,第917行,在test_trait_with_range
vtk_attr_name)
文件“/Users/ryan/anaconda3/envs/mayavi/lib/python2.7/site-packages/tvtk/tests/test_tvtk.py”,第899行,get_min_max_value
返回(getattr(vtk_klass(),get_min_method)(),
SystemError:错误返回无异常集


在 30.976 秒内运行 106 次测试

失败(跳过=3,错误=1)

我在 MayaVi 测试中没有发现任何错误。

从 jupyter 控制台尝试我得到一个稍微不同的错误:

2016-06-21 14:12:20.658 python[45411:6739252] modalSession 已过早退出 - 检查对 endModalSession 的可重入调用:
GL2PS 信息:OpenGL 反馈缓冲区溢出

警告:内核没有响应 is_complete_request。 将use_kernel_is_complete为 False。

我无法使用 Wx 运行,因为当我尝试将其设置为 GUI 时出现以下错误:

发生了异常,请使用 %tb 查看完整的回溯。

SystemExit:该程序需要访问屏幕。
请使用 Python 的框架构建运行,并且仅当您
登录到 Mac 的主显示屏。

要退出:使用“退出”、“退出”或 Ctrl-D。

谢谢(你的)信息,

请注意,目前我没有可用于测试的 mac os(我不是 mac 用户),因此如果您可以为我尝试更多的东西,将有助于我稍后调试问题。

测试是否所有具有 MinValue/MaxValue 的属性都是特征

虽然测试失败不好,但我不认为这个错误与你的问题有关。

从 jupyter 控制台尝试我得到一个稍微不同的错误:

关于 OpenGL 的错误很奇怪,并且不清楚它来自哪里(没有回溯)。
是否可以从python提示符运行命令以避免 jupyter 控制台与 Qt 应用程序和输出交互。

我无法使用 Wx 运行,因为当我尝试将其设置为 GUI 时出现以下错误:

我看到您正在使用 wxpython 3.0。 请注意,在 traitsui 5.0.0 中添加了对 python 3.0 的支持。 所以我建议,由于您使用的是最新版本的 mayavi,您还应该使用最新版本的 traitsui、traits 和 pyface、apptools 和 vivisage。

最后,最后一条消息(在 wx 上)让我认为我们在无头机器(或者可能是容器)上运行 python,这是真的吗?

谢谢您的帮助。

更新

在使用 python 2.7.10(64 位)和 vtk 6.3 的 Windows 10 上,我遇到了段错误。 所以看起来这个问题与mac osx无关。 将很快提供更多信息。

@ryanpepper看起来tvtk.GL2PSExporter()在尝试write pdf 文件时失败。 这可能是 vtk 或 tvtk 的错误,但如果不进行更多调查就无法确定。 正常的ps导出应该作为一种解决方法

@itziakos太好了,感谢您的调查。

@ryanpepper - 它实际上有效,但看起来有一个奇怪的 VTK 问题,当文件实际上是一个带有压缩内容的 PDF 时,VTK 保存了一个 snapshot.pdf.gz 所以如果你只是将文件重命名为 snapshot.pdf 它应该只呈现美好的。 如果您在弹出的对话框中关闭压缩,这也将起作用,但文件会更大,尽管文件将保存为快照.pdf。 :(我正在关闭它,因为这看起来像是一个 VTK 问题,它是如何保存文件的。一个hacky 解决方法是测试文件是否保存为 *.pdf.gz 并移动它,但这似乎是一个黑客,但我我会做到的。它是https://github.com/enthought/mayavi/pull/416 的一部分,如果需要,我将对此进行更多修复,但现在正在关闭此问题。

此页面是否有帮助?
0 / 5 - 0 等级