首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MayaVi安装在Qt4上会导致分段故障

MayaVi安装在Qt4上会导致分段故障
EN

Stack Overflow用户
提问于 2011-10-11 01:12:22
回答 1查看 2.1K关注 0票数 1

我正试图在我的电脑上安装MayaVi。我在一个带有OSX10.6.8,4GB内存的MacBook Air上。

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

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

但是,如果我单独运行ipython,就可以成功地运行from mayavi import mlab。然后,我尝试遵循下面的示例:http://github.enthought.com/mayavi/mayavi/example_using_with_scipy.html,它包括以下命令:

代码语言:javascript
复制
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)

这一切都很好,我得到一个窗口弹出,我可以旋转三维图形等。然而,我点击图标打开管道,这将打开另一个窗口。然后教程说双击“等表面”来改变它的属性。一旦我这样做,我就会得到一个可重复的分割错误。

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

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

代码语言:javascript
复制
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确实会弹出,但如果我尝试执行任何操作,则会出现分段错误。

请让我知道,如果您有任何想法,疑难解答,或可能指导重新安装软件包成功。

谢谢!

乌里

EN

回答 1

Stack Overflow用户

发布于 2012-09-09 11:20:01

我也有一个MacBook空气与OSX10.7.4(狮子)。我在二月花了很多时间让梅拉维发挥作用,最终我成功地制作出了科学的地块。这仍然意味着一些示例和测试无法正确运行,GUI在控制台中产生了大量错误消息,但没有崩溃(大多数情况下)。现在,我成功地破坏了Python安装(可能是通过升级numpy),所以我需要重新安装。唉,6个月后,事情并没有变得更容易!

仍然没有可行的预编译选项。我从这里尝试了Enthought发行版:http://www.enthought.com/repo/.epd_academic_installers。仍然没有64位版本的ETS,组件是古老的,基于wxPython的mayavi看起来很难看,而且速度慢,反应迟钝。回到brewpip。经过大量的尝试和错误之后,以下是多少起作用的东西:

1.先决条件

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

代码语言:javascript
复制
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的成功程度较低):

代码语言:javascript
复制
cd /usr/bin
sudo rm cc c++
sudo ln -s gcc cc
sudo ln -s g++ c++

2.安装

2.1 Python

代码语言:javascript
复制
brew install python --framework --universal

指向新安装:

代码语言:javascript
复制
cd /System/Library/Frameworks/Python.framework/Versions
rm Current
ln -s /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/Current .

如果安装了环境保护署,在/Library/Frameworks/Python.framework/Versions中也需要这样做,否则环保署将优先考虑。

2.2 Numpy

从源安装numpy (pip 1.2目前没有正确安装npymath.ini,这将使npymath.ini无法构建):

代码语言:javascript
复制
git clone https://github.com/numpy/numpy.git
cd numpy
git checkout v1.6.2
python setup.py install

由于有这么多软件包链接到numpy,所以我确实建议查看官方发布版1.6.2到今天。接下来,使numpy标题可见:

代码语言:javascript
复制
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):

代码语言:javascript
复制
brew install qt
brew install pyqt

还可以安装pyside (1.1.1)

代码语言:javascript
复制
brew install pyside

但这似乎产生了更多的崩溃与梅拉维。无论如何,追加

代码语言:javascript
复制
export QT_API=pyqt

以避免任何混淆。下一步安装vtk (5.10.0;5.8.0也同样有效)

代码语言:javascript
复制
brew install vtk --python --tcl --examples --qt

...and等待(编译大约需要40分钟)。--qt标志不是严格必要的,但它也没有坏处。

接下来,从http://www.vtk.org/files/release/5.10/vtkdata-5.10.0.tar.gz下载vtk数据,解压缩并让VTK_DATA_ROOT环境变量指向VTKData目录。中运行一些示例

代码语言:javascript
复制
/usr/local/share/vtk/Examples

python <example>.py启动python示例,用vtk <example.tcl>启动TCL示例。效果非常好,对吧?所以让我们看看梅拉维下一步是怎么搞砸的.

2.4 ETS和mayavi

尽管

代码语言:javascript
复制
pip install mayavi

在某个地方,它似乎会产生比从github安装流血边缘更多的崩溃。获取https://github.com/enthought/ets/raw/master/ets.py并运行

代码语言:javascript
复制
python ets.py clone

克隆ETS git存储库。您只需要apptoolsmayavipyfacetraitstraitsui,如果要从命令行运行mayavi2,则可能需要envisage。因此,删除其他目录并执行

代码语言:javascript
复制
python ets.py develop

这将允许您在mayavi/examples/tvtkmayavi/examples/mayavi中运行存储库中的一些示例,方法是运行python <example>.py并使用GUI。有许多控制台错误和许多GUI功能不起作用,比如选择LUT表。但希望它不会崩溃。

2.5 matplotlib,ipython

我更喜欢从github那里得到出血的边缘,以便得到scipy和matplotlib。首先使用brew安装所有依赖项。然后

代码语言:javascript
复制
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)。对于qt控制台,首先安装:

代码语言:javascript
复制
pip install pygments
pip install pyzmq

然后

代码语言:javascript
复制
pip install ipython

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

  • ipython with mlab.show():Hangs.
  • ipython with mlab.show():Works,但提示符可能变成unresponsive.
  • ipython --gui=qtipython --pylab=qt:Works,但是“保存”对话框关闭没有mlab.show()的immediately.
  • ipython qtconsole:带有mlab.show():Works.
  • ipython qtconsole --gui=qtipython qtconsole --pylab=qt:Works.

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7720411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档