我正在尝试在计算机上安装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会弹出,但如果我尝试进行任何操作,我会遇到段错误。
如果您对此问题有任何疑问,请告知我们,或者是否有关成功重新安装软件包的指导。
谢谢!
乌里
答案 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看起来很丑,感觉很慢而且反应迟钝。回到brew
和pip
。经过大量的反复试验后,这里或多或少都有效:
隐藏/卸载损坏的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++
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将优先考虑。
从源代码安装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 .
安装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如何将它们弄得一团糟......
虽然
pip install mayavi
让你到达某个地方,它似乎比从github安装更多的崩溃产生更多的崩溃。获取https://github.com/enthought/ets/raw/master/ets.py并运行
python ets.py clone
克隆ETS git存储库。您只需要apptools
,mayavi
,pyface
,traits
和traitsui
,可能envisage
,如果您想从mayavi2
运行python ets.py develop
命令行。所以删除其他目录并执行
mayavi/examples/tvtk
这应该允许您通过运行mayavi/examples/mayavi
在python <example>.py
和brew
中运行存储库中的一些示例,并使用GUI。有许多控制台错误和许多GUI功能无法正常工作,例如选择LUT表。但它希望不会崩溃。
我更喜欢从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=qt
或ipython qtconsole
:正常工作,但“保存”对话框会立即关闭。mlab.show()
没有ipython qtconsole
:挂起。mlab.show()
与ipython qtconsole --gui=qt
:工作。ipython qtconsole --pylab=qt
或{{1}}:工作。