1

我一直在尝试运行以下 python 代码(来自 Enthought 的网站)来测试 Enthought 的 Mayavi 模块的动画功能。

from mayavi import mlab
import numpy
n_mer, n_long = 6, 11
pi = numpy.pi
dphi = pi/1000.0
phi = numpy.arange(0.0, 2*pi + 0.5*dphi, dphi, 'd')
mu = phi*n_mer
x = numpy.cos(mu)*(1+numpy.cos(n_long*mu/n_mer)*0.5)
y = numpy.sin(mu)*(1+numpy.cos(n_long*mu/n_mer)*0.5)
z = numpy.sin(n_long*mu/n_mer)*0.5

# View it.
l = mlab.plot3d(x, y, z, numpy.sin(mu), tube_radius=0.025, colormap='Spectral')

# Now animate the data.
ms = l.mlab_source
for i in range(10):
    x = numpy.cos(mu)*(1+numpy.cos(n_long*mu/n_mer +
                                  numpy.pi*(i+1)/5.)*0.5)
    scalars = numpy.sin(mu + numpy.pi*(i+1)/5.)
    ms.set(x=x, scalars=scalars)

但是,执行后,什么也没有发生。它运行没有错误,但只有 TVTK 场景窗口弹出空白 - 没有图像,没有动画。问题可能出在 Mayavi 模块导入上吗?网站上的示例以:from enthought.mayavi import mlab 开头,而我有:from mayavi import mlab “enthought.mayavi”导入字符串对我不起作用。我使用的 Mayavi 是 pip 安装。
我应该怎么做才能解决这个问题?我正在使用 Mac OSX 10.8.2。提前致谢。

4

2 回答 2

2

此演示适用于我的机器(刚刚升级到 OS 10.8.2)。

不过,第一件事是回答您有关导入的问题。大约一年半前的某个时候,我们重构了这些包以从导入中删除经过深思熟虑的名称。因此,导入 mayavi 的 mlab 的标准方式从

from enthought.mayavi import mlab

from mayavi import mlab

设置的设计使前者仍然有效,但我们试图将示例代码中的导入重构为第二种模式。因此,我们可以非常确定 import 语句没有问题。

你有什么可以在 Mayavi 中运行的吗?尝试这个:

from mayavi import mlab
mlab.test_plot3d()

另外,mayavi 的版本是什么,你有哪个 EPD(32 位或 64 位),以及终端中的以下结果是什么?

$ echo $ETS_TOOLKIT
于 2013-01-28T17:24:37.500 回答
0

在 Win 7 64 上使用 Canopy 我遇到了类似的问题。只有它显示最后一帧,没有动画。我通过将 pylab 后端更改为 wx 而不是 qt 来修复它。

于 2013-10-19T07:40:03.267 回答