在Qt4上安装MayaVi会导致分段错误

时间:2011-10-11 01:12:23

标签: python qt installation segmentation-fault mayavi

我正在尝试在计算机上安装MayaVi。我使用的是OS X 10.6.8,4 GB RAM的MacBook Air。

我的python和我的大部分堆栈是通过Homebrew或pip构建的。特别是对于python2.7,ipython,Qt4,numpy,scipy,vtk等都是如此。在Homebrew中使用--python和--qt-extern标志安装了VTK,并且所有构建都很好。我没有安装wxPython,因为我无法通过pip,手动构建或二进制文件进行工作。

如果我运行ipython -q4thread,我无法成功执行from mayavi import mlab,因为我收到与PyQt使用两个不同API有关的错误:http://groups.google.com/group/spyderlib/browse_thread/thread/36a35baec74ca144

但是,如果我单独运行ipython,我就可以成功运行from mayavi import mlab。然后我尝试按照这个例子:http://github.enthought.com/mayavi/mayavi/example_using_with_scipy.html,其中包括以下命令:

import numpy as np

def V(x, y, z):
    """ A 3D sinusoidal lattice with a parabolic confinement. """
    return np.cos(10*x) + np.cos(10*y) + np.cos(10*z) + 2*(x**2 + y**2 + z**2)

X, Y, Z = np.mgrid[-2:2:100j, -2:2:100j, -2:2:100j]

from mayavi import mlab
mlab.contour3d(X, Y, Z, V)

这一切都很好,我得到一个弹出的窗口,我可以旋转3d图等。然后,我点击图标打开管道,打开另一个窗口。然后教程说要双击“isosurface”来改变它的属性。一旦我这样做,我就会得到一个可重现的分段错误。

我不知道如何开始弄清问题是什么。

或者,我可以从命令行运行MayaVi:mayavi2,然后弹出GUI。当我这样做时,我得到以下输出:

Warning: Unable to import the wx backend for pyface due to traceback: Traceback (most recent call last):
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/toolkit.py", line 45, in _init_toolkit
        be = import_toolkit(tk)
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/toolkit.py", line 31, in import_toolkit
        __import__(be + 'init')
      File "/usr/local/Cellar/python/2.7.1/lib/python2.7/site-packages/pyface/ui/wx/init.py", line 14, in <module>
        import wx
    ImportError: No module named wx

虽然GUI会弹出,但如果我尝试进行任何操作,我会遇到段错误。

如果您对此问题有任何疑问,请告知我们,或者是否有关成功重新安装软件包的指导。

谢谢!

乌里

1 个答案:

答案 0 :(得分:1)

我还有一台配备OS X 10.7.4(Lion)的MacBook Air。我花了很多时间在二月份让mayavi工作,最终成功地创造了科学的情节。这仍然意味着某些示例和测试无法正常运行,并且GUI在控制台中生成了大量错误消息,但没有崩溃(大多数情况下)。现在,我设法破坏了我的Python安装(可能是通过升级numpy),所以我需要重新安装。唉,6个月后它没有变得更容易!

仍然没有可行的预编译选项。我从这里尝试了Enthought Python Distribution:http://www.enthought.com/repo/.epd_academic_installers。仍然没有64位版本的ETS for Mac,组件很古老,基于wxPython的mayavi看起来很丑,感觉很慢而且反应迟钝。回到brewpip。经过大量的反复试验后,这里或多或少都有效:

1。先决条件

隐藏/卸载损坏的Homebrew Python安装:

mv /usr/local/lib/python2.7/site-packages /usr/local/lib/python2.7/site-packages-old 
mv /usr/local/share/python /usr/local/share/python-old
brew uninstall python pyqt pyside vtk

从Xcode(4.4.1),选择llvm-gcc作为编译器(我在clang方面的成功率较低):

cd /usr/bin
sudo rm cc c++
sudo ln -s gcc cc
sudo ln -s g++ c++

2。安装

2.1 Python

brew install python --framework --universal

指向新安装:

cd /System/Library/Frameworks/Python.framework/Versions
rm Current
ln -s /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/Current .

如果安装了EPD,则需要在/Library/Frameworks/Python.framework/Versions中执行相同操作,否则EPD将优先考虑。

2.2 Numpy

从源代码安装numpy(pip 1.2当前无法正确安装npymath.ini,这将使scipy无法构建):

git clone https://github.com/numpy/numpy.git
cd numpy
git checkout v1.6.2
python setup.py install

由于很多软件包都与numpy相关联,所以我真的建议你查看截至今天的正式版本1.6.2。接下来使numpy标题可见:

cd /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7
ln -s /usr/local/lib/python2.7/site-packages/numpy/core/include/numpy .

2.3 qt,pyqt,vtk

安装qt(4.8.2)和pyqt(4.9.4):

brew install qt
brew install pyqt

还可以安装pyside(1.1.1)

brew install pyside

但这个似乎会产生更多崩溃与mayavi。在任何情况下,追加

export QT_API=pyqt

.bashrc以避免任何混淆。下一步安装vtk(5.10.0; 5.8.0同样适用)

brew install vtk --python --tcl --examples --qt

...等待(编译大约需要40分钟)。 --qt标志不是严格必要的,但也不会造成伤害。

接下来,从http://www.vtk.org/files/release/5.10/vtkdata-5.10.0.tar.gz下载vtk数据,在某处解压缩并将VTK_DATA_ROOT环境变量指向VTKData目录。在

中运行一些示例
/usr/local/share/vtk/Examples

使用python <example>.py启动python示例,使用vtk <example.tcl>启动TCL示例。工作绝对精美,对吧?那么让我们看看mayavi如何将它们弄得一团糟......

2.4 ETS和mayavi

虽然

pip install mayavi

让你到达某个地方,它似乎比从github安装更多的崩溃产生更多的崩溃。获取https://github.com/enthought/ets/raw/master/ets.py并运行

python ets.py clone

克隆ETS git存储库。您只需要apptoolsmayavipyfacetraitstraitsui,可能envisage,如果您想从mayavi2运行python ets.py develop 命令行。所以删除其他目录并执行

mayavi/examples/tvtk

这应该允许您通过运行mayavi/examples/mayavipython <example>.pybrew中运行存储库中的一些示例,并使用GUI。有许多控制台错误和许多GUI功能无法正常工作,例如选择LUT表。但它希望不会崩溃。

2.5 scipy,matplotlib,ipython

我更喜欢从github获得scipy和matplotlib的优势。首先使用git clone https://github.com/scipy/scipy.git cd scipy python setup.py install git clone https://github.com/matplotlib/matplotlib.git cd matplotlib python setup.py install 安装所有依赖项。然后

pip

然后使用pip install pygments pip install pyzmq 安装ipython(0.13)。首先为qtconsole安装:

pip install ipython

然后

ipython

有几种方法可以启动ipython以与mayavi一起使用,具体取决于谁控制QT事件循环:

  • mlab.show()没有ipython:挂起。
  • mlab.show()ipython --gui=qt:有效,但提示可能会无响应。
  • ipython --pylab=qtipython qtconsole:正常工作,但“保存”对话框会立即关闭。
  • mlab.show()没有ipython qtconsole:挂起。
  • mlab.show()ipython qtconsole --gui=qt:工作。
  • ipython qtconsole --pylab=qt或{{1}}:工作。
祝你好运!