在 OSX 10.8.2 上使用 pip 和 brew 安装 Python 2.7.3 安装了 FiPy,我运行了以下示例测试代码:
from fipy import *
mesh = Grid3D(nx=50, ny=100, nz=10, dx=0.1, dy=0.01, dz=0.1)
x, y, z = mesh.cellCenters
xyzVar = CellVariable(mesh=mesh, name=r"x y z", value=x * y * z)
k = Variable(name="k", value=0.)
viewer = MayaviClient(vars=numerix.sin(k * xyzVar), limits={'ymin': 0.1, 'ymax': 0.9}, datamin=-0.9, datamax=2.0, title="MayaviClient test")
for kval in range(10):
k.setValue(kval)
viewer.plot()
viewer._promptForOpinion()
这产生了以下错误:
File "/usr/local/lib/python2.7/site-packages/pyface/qt/__init__.py", line 17, in prepare_pyqt4
sip.setapi('QString', 2)
ValueError: API 'QString' has already been set to version 1
我决定通过在 prepare_pyqt4 中注释掉 sip.setapi('QString', 2) 和 sip.setapi('QVariant', 2) 来看看我能走多远。这个简单的 hack 通过了版本控制问题,但提出了一个新问题。
File "/Library/Python/2.7/site-packages/fipy/viewers/mayaviViewer/mayaviDaemon.py", line 79, in <module>
from enthought.mayavi.plugins.app import Mayavi
ImportError: No module named enthought.mayavi.plugins.app
现在看来 FiPy Mayavi 查看器缺少一个模块。
我认为我的站点包也应该都在同一个位置。看起来 pip 安装到 /Library/Python/2.7/site-packages 而 brew 安装到 /usr/local/lib/python2.7/site-packages,我必须解决一些问题(我认为问题出在 pip 上)。
我的问题是如何获得一个干净的 FiPy 安装与 Mayavi 一起工作(不产生这些错误)并修复我的站点包?