LoginSignup
2
2

More than 5 years have passed since last update.

Python 3.6, Anaconda, Spyder使いに捧げるMayavi用の仮想環境構築

Last updated at Posted at 2017-09-08

Python 3.6, Anaconda (Python 3.x), Spyderの環境下で、3D描画に特化したライブラリMayaviを導入する方法。

Mayaviは旧バージョンであるPyQt4を要求し、これと整合性を保つため(?)にもPython2.7の仮想環境を構築するのが手っ取り早いようです。

conda create -n py27mayavi python=2.7 pyqt=4 mayavi vtk spyder

ここではmayaviに必要な最低限のライブラリのみ記載しています。その他、必要なライブラリも適宜追加してください。

仮想環境構築に際するチャンネルの問題

その後Mayavi用のSpyderが起動しないトラブルに見舞われましたが、チャンネルをconda-forgeからAnacondaに変更することで何故か解決しました。以下に成功した仮想環境設定を書いておきます。

conda create -n maya27 python=2.7 anaconda spyder mayavi pyqt=4 qt=4 vtk=6 matplotlib=1 --override-channels --channel anaconda

最後の-override-channels --channel anacondaがミソのようです[1]。
matplotlibのver=1はPyQtとの整合性を保つため(多分)、vtkのverは指定しなくていいかも。

この仮想環境にライブラリを追加するときも-override-channels --channel anacondaを忘れずに(もはや優先チャンネルをconda-forgeからAnacondaに設定し直したほうが早いかも。。)。

また、基本的に「動けばいいや」というスタンスなので原因については調べておりません。どうぞご容赦ください。。
【ここまで追記 (2018.07.18)】

軸の表示に関するトラブルの解決

軸の目盛りを設定しようとすると何故かエラーが発生、カーネルがお亡くなりになられます。これはどうもmayaviのver4.5.0以降のバグのようです[2]。解決策は以下の通り。

Step 1
"(Anacondaフォルダパス)/envs/(仮想環境名)/Lib/site-packages/mayavi" に移動

Step 2
"modules" フォルダ内 "axes.py" の173行目

self.configure_input_data(self.axes, src.outputs[0])

data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
self.configure_input_data(self.axes, data)

へと変更。

Step 3
"tools" フォルダ内 "decorations.py" の372行目

axes.axes.ranges = axes.module_manager.source.outputs[0].bounds

src = axes.module_manager.source
data = src.outputs[0] if not hasattr(src.outputs[0], 'output') else src.outputs[0].output
axes.axes.ranges = data.bounds

へと変更。

ただ参考サイト[2]の最後のほうを訳しただけですが・・。当方の環境ではこのやり方で解決し、今のところ順調に動いております。設定はなかなか面倒ですが、やはりMayaviで描く3Dプロットは美しいですね。
【ここまで追記2 (2018.07.18)】

【参考にしたサイト】

[1] https://conda.io/docs/commands/conda-create.html
[2] https://github.com/enthought/mayavi/issues/474

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2