Mayavi是python的一個包,提供方便的可視化方案。目前(20150809)Mayavi還沒有py3的支持,以下安裝環境在python 2.7.10下進行
安裝Mayavi:
1. 通過pip install mayavi自動檢測並且安裝大部分的依賴包:
apptools、traits、traitsui、configobj、pyface、six
如果速度太慢可以參見之前隨筆更改pip源為豆瓣源:pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
2. 此時安裝Mayavi仍然報錯:ImportError: No module named vtk
需要安裝vtk支持:
apt-get install vtk6
ubuntu 下使用apt-get 可以直接安裝vtk,可能需要安裝的依賴會比較多,需要花費較長時間,可參考之前隨筆更改ubuntu源為阿里源:http://www.cnblogs.com/lyon2014/p/4715379.html
安裝python-vtk:
apt-get install python-vtk
3. 此時,如果你用的python就是系統的python,應該就有了vtk模塊,測試:
python -c 'import vtk'
沒有報錯就已經成功了。到這里就可以直接跳過3、4兩步。
但是如果你和我一樣用的是自己安裝的python,或者用pyenv管理python版本,此時仍然找不到vtk模塊,直到執行pyenv global system切換回系統python才能找到vtk模塊
4. 安裝vtk模塊
vtk官網死活打不開,重新安裝vtk遇到困難,但是沒關系,還有另外的解決方案:將系統安裝的vtk添加到自己的python中
首先找到系統安裝的python-vtk路徑,如ubuntu下,apt-get會默認安裝在/usr/share/pyshared/以及相應編譯的庫包安裝在:/usr/lib/pyshared/python2.7/vtk中,通過查看/usr/share/python-support/python-vtk.public文件可以看到相關信息
第一種方案是將這兩個目錄添加到PYTHONPATH環境變量中,個人比較反感污染PYTHONPATH變量,這會導致使用其他版本python的時候難以控制;
第二種方案是將/usr/share/pyshared/vtk 鏈接到當前python的lib目錄下,並且把/usr/lib/pyshared/python2.7/vtk中的內容也鏈接過來:
1 cd ~/.pyenv/versions/2.7.10/lib/python2.7/site-packages 2 mkdir vtk 3 ln -s /usr/share/pyshared/vtk/* ./ 4 ln -s /usr/lib/pyshared/python2.7/vtk/* ./
5. 更改python的unicode支持(建議先看完第6點再操作)
如果你和我一樣使用pyenv,則默認編譯安裝的python支持的unicode是ucs2的,此時:
python -c 'import vtk'
則會報錯:ImportError: /usr/lib/libvtkPythonCore.so.5.8: undefined symbol: _PyUnicodeUCS4_AsDefaultEncodedString
需要重新編譯,使其支持UCS4
首先重新下載python:pyenv install -k 2.7.10
等待下載完成,開始安裝的時候,取消,然后進入下載目錄:
cd ~/.pyenv/sources/2.7.10
tar zxvf Python-2.7.10.tgz
cd Python-2.7.10/
./configure --prefix=/home/vagrant/.pyenv/versions/2.7.10 --enable-unicode=ucs4
上面prefix目錄填你的pyenv對應的版本安裝目錄,使用絕對路徑,一般來說是: /home/用戶名/.pyenv/versions/版本號,只有配置為這個目錄才能使pyenv調用的python為這次編譯安裝的python;如果你沒有用pyenv,忽略此條;
make && make install
等待安裝完成
測試:python -c 'import vtk'
沒有報錯,安裝成功
6. 注意:一旦你完成第五步,意味着之前安裝的包如果使用了ucs2編碼,則會找不到關於ucs2的內容(比如numpy),這個時候需要卸載重裝相應的包,所以關於unicode是很坑的一個地方,需要檢查並且重新編譯各種包,比較好的辦法是,不要去更改原來的python,使用pyenv新安裝一個python,並且編譯支持ucs4,之后將可能用到的包一一安裝;
7. 當你搞定所有的問題之后,終於可以安裝mayavi了:
pip install mayavi
大功告成
出於學習的需要,會學習mayavi,但是我是一萬個不情願使用更新滯后的包的,在其支持py3之前應該不會使用,可能會被其他包替代吧。
繼:
如果使用mayavi的話,最好還是切換到系統python,否則會有很多的依賴問題;
安裝好mayavi之后,如果需要使用,則需要安裝enthghout公司的其他包:VTK, appinst, apptools, envisage, traitsui, traits, pyface, configobj
這些包都可以通過pip快速安裝,安裝好之后,還需要依賴的界面工具,可以是wxPython或者是PyQT中的一種,否則無法成功使用traits包;
以PyQT為例,在安裝PyQT之前,首先確認QT已經成功安裝,然后再安裝PyQT,這里比較郁悶的是pip上的pyqt好像都裝不了,使用homebrew安裝pyqt時發現依賴sip
