【问题标题】:MayaVi installation on Qt4 leads to segmentation faults在 Qt4 上安装 MayaVi 会导致分段错误
【发布时间】:2011-10-11 01:12:22
【问题描述】:

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

我的 python 和我的大部分堆栈都是通过 Homebrew 或 pip 构建的。对于 python2.7、ipython、Qt4、numpy、scipy、vtk 等尤其如此。VTK 在 Homebrew 中安装了 --python 和 --qt-extern 标志,并且所有构建都很好。我没有安装 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 绘图等。但是,然后我单击图标打开管道,这会打开另一个窗口。本教程然后说双击“等值面”以更改其属性。一旦我这样做,我就会得到一个可重现的分段错误。

我不知道如何开始找出问题所在。

或者,我可以从命令行运行 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,但如果我尝试执行任何操作,我会收到段错误。

如果您对解决此问题有任何想法,或者有关于成功重新安装软件包的指导,请告诉我。

谢谢!

乌里

【问题讨论】:

    标签: python qt installation segmentation-fault mayavi


    【解决方案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。仍然没有带有 ETS for Mac 的 64 位版本,组件很古老,基于 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 &lt;example&gt;.py 启动python 示例,使用vtk &lt;example.tcl&gt; 启动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 存储库。如果你想从命令行运行mayavi2,你只需要apptoolsmayavipyfacetraitstraitsui,可能需要envisage。所以删除其他目录并执行

    python ets.py develop
    

    这应该允许您通过运行python &lt;example&gt;.py 来运行mayavi/examples/tvtkmayavi/examples/mayavi 中存储库中的一些示例并使用GUI。有很多控制台错误和很多 GUI 功能不起作用,比如选择 LUT 表。但希望它不会崩溃。

    2.5 scipy、matplotlib、ipython

    我更喜欢从 github 获取 scipy 和 matplotlib 的前沿。首先使用brew 安装所有依赖项。那么

    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 安装 ipython (0.13)。先安装 qtconsole:

    pip install pygments
    pip install pyzmq
    

    然后

    pip install ipython
    

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

    • ipython 没有 mlab.show():挂起。
    • ipythonmlab.show():有效,但提示可能会变得无响应。
    • ipython --gui=qtipython --pylab=qt:有效,但“保存”对话框会立即关闭。
    • ipython qtconsole 没有 mlab.show():挂起。
    • ipython qtconsolemlab.show():有效。
    • ipython qtconsole --gui=qtipython qtconsole --pylab=qt:有效。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 2016-03-22
      • 2014-05-08
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多