终于解决了python3中安装mayavi的各种问题。
之前安装的是python3.5.2是在anaconda3-4.2.0一起安装的,后来发现安装mayavi会出现各种问题,在改了vtk的qt接口函数后,将就可以用了,但是还是很不满意,所以决定重新安装。
真是绕了很大的弯,请后来人注意。
说白了就是各个包的版本不兼容问题,这个是最好的搭配
VTK-7.1.1-cp36-cp36m-win_amd64.whl
numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl
traits-4.6.0-cp36-cp36m-win_amd64.whl
mayavi-4.5.0+vtk71-cp36-cp36m-win_amd64.whl
PyQt4-4.11.4-cp36-cp36m-win_amd64.whl
但是我没有找到numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl,只能拿
numpy-1.14.5+mkl-cp36-cp36m-win_amd64.whl凑合用了。
一定的按照循序安装
安装包链接会放在后面。
我主要说一下anaconda,其实这个集成式的安装挺好,但是也就造成了mayavi安装时候的各种错误
上面的安装包,当你安装完anaconda后添加anaconda进环境变量,然后就可以进行pip安装,不再赘述。
下面说重点,就是安装前,先输入
conda list
看看哪些安装包有冲突。我发现我的numpy和pyqt有冲突,要用
conda uninstall pyqt
conda uninstall numpy
进行卸载,可能卸载的时候会把其他包卸载了,也管不了那么多了。。
如果不事先卸载,mayavi调用的是anaconda自带的numpy,会报错。
pyqt的存在会直接导致让你安装PySide,而这个玩意儿python3.5以上包括3.5根本用不了。。
所以遇到这样的问题的,可以这样试试,反正我还没试,估计可行。
链接:mayavi包
安装好后测试vtk
from tvtk.api import tvtk
s = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)
print(s)
输出
vtkCubeSource (0000022EC916A190)
Debug: Off
Modified Time: 98
Reference Count: 2
Registered Events:
Registered Observers:
vtkObserver (0000022ECC9581F0)
Event: 33
EventName: ModifiedEvent
Command: 0000022ECC82FB20
Priority: 0
Tag: 1
Executive: 0000022ECC9C85C0
ErrorCode: No error
Information: 0000022ECC84EF90
AbortExecute: Off
Progress: 0
Progress Text: (None)
X Length: 1
Y Length: 2
Z Length: 3
Center: (0, 0, 0)
Output Points Precision: 0
测试mayavi
from numpy import *
from mayavi import mlab
# Create the data.
dphi, dtheta = pi/20.0, pi/20.0
[phi,theta] = mgrid[0:pi+dphi*1.5:dphi,0:2*pi+dtheta*1.5:dtheta]
m0 = 4; m1 = 3; m2 = 2; m3 = 3; m4 = 6; m5 = 2; m6 = 6; m7 = 4;
r = sin(m0*phi)**m1 + cos(m2*phi)**m3 + sin(m4*theta)**m5 + cos(m6*theta)**m7
x = r*sin(phi)*cos(theta)
y = r*cos(phi)
z = r*sin(phi)*sin(theta)
# View it.
s = mlab.mesh(x, y, z, representation="wireframe", line_width=1.0 )
mlab.show()
结果
结束