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

标签 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等是正确的。VTK在Homebrew中安装了--python和--qt-extern标志,并且所有构建都很好。我没有安装wxPython,因为无法通过pip,手动构建或二进制文件使它工作。

如果我运行ipython -q4thread,由于收到与使用两种不同的PyQt API有关的错误,我将无法成功执行from mayavi import mlabhttp://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确实会弹出,但是如果我尝试执行任何操作,都会遇到段错误。

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

谢谢!

乌里

最佳答案

我也有配备OS X 10.7.4(Lion)的MacBook Air。我在二月份花了很多时间让mayavi工作,最终成功达到了可以制作科学图的地步。这仍然意味着某些示例和测试将无法正确运行,并且GUI在控制台中产生了许多错误消息,但是并没有崩溃(大多数时间)。现在,我设法中断了我的Python安装(可能是通过升级numpy进行的),因此我需要重新安装。 6,六个月后并没有变得更容易!

仍然没有可行的预编译选项。我从以下位置尝试了Enthought Python发行版:http://www.enthought.com/repo/.epd_academic_installers。仍然没有Mac版ETS的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(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存储库。如果要从命令行运行apptools,则只需要mayavipyfacetraitstraitsuienvisage,可能只需要mayavi2。因此,删除其他目录并执行

python ets.py develop


这应该允许您通过运行mayavi/examples/tvtk来运行mayavi/examples/mayavipython <example>.py的存储库中的一些示例,并使用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事件循环:


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


祝好运!

关于python - 在Qt4上安装MayaVi会导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7720411/

相关文章:

python - 根据 Python 中的模式将单个列表分成多个列表的最佳方法是什么?

即使有尝试,Python 循环也会重新启动 : except:

c++ - 二维图像上的 FFTW 错误反向变换 [with Qt]

c# - 如何在c#中将服务安装为当前帐户

python - 在 AWS Lambda 上使用 Python 中的 Pdf2img 将 pdf 页面转换为图像

python - 无法导入使用 pip 安装的包

c++ - 使用 glad with a QOpenGLWidget 加载 OpenGL 函数指针

linux - 如何为 32 位构建 QT 4.8.7

java - 分发 Java Web 应用程序

installation - 在哪里可以找到 QNX SP1(不是 QNX SDP SP1)