2013-05-03 86 views
6

以前我一直在使用由Mac端口維護的python環境。我有一些使用PyQT,VTK,matplotlib等基本腳本。我已經能夠使用Paraview,但似乎有點沉重,因爲我儘管我會嘗試MayaVi2(和TVTK)。如何讓MayaVi2默認/使用Qt而不是wx?

我下載並嘗試手動安裝,但它證明麻煩。所以我以爲我會咬緊牙關,嘗試Canopy(學術執照)。基於這個建議在Qt,VTK和MayaVI世界中都很好的VTK/Mayavi on Mac OS X,我安裝了64位Canopy。

我無法讓Canavi2在Canopy環境中工作。它運行,但控制檯獲取很多錯誤,如果我調用任何對話框/設置框的「按鈕」無法正常工作。這裏是(一對夫婦屏幕充盈的),當我嘗試啓動mayavi2的第一個錯誤:

(Canopy 64bit) scratch_pad 501 $mayavi2 Traceback (most recent call last): File "/Applications/Canopy.app/appdata/canopy-1.0.0.1160.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/pyface/ui/wx/splash_screen.py", line 121, in _on_paint dc = wx.PaintDC(window)

其實我更感興趣的是TVTK,所以我嘗試了一些Mayavi的演示從網站圖庫http://docs.enthought.com/mayavi/mayavi/auto/examples.html少數我嘗試過一種工作,那就是他們顯示一個VTK(?)窗口/場景,我可以與VTK窗口進行交互。直到我打開設置/對話窗口,然後沒有任何對話窗口「按鈕」工作,我必須強制退出。這是錯誤的最後一行,當我在plot3D demo打開「設置」按鈕:

simple demo: File "/Users/michael/Library/Enthought/Canopy_64bit/System/lib/python2.7/site-packages/wx/_core.py", line 9162, in DestroyChildren return core.Window_DestroyChildren(*args, **kwargs) wx._core.PyAssertionError: C++ assertion "GetEventHandler() == this" failed at /BUILD/wxPython-src-2.9.2.4/src/common/wincmn.cpp(468) in ~wxWindowBase(): any pushed event handlers must have been removed

我甚至嘗試

ipython --gui=wx

(如建議在頁面上),但在這種情況下,它崩潰,沒有窗戶。

基於控制檯上的錯誤消息,它們看起來都是wx相關的。我的理解是Canopy環境是「獨立的」,但是我的舊環境可能會以某種方式相互衝突?我怎麼會測試這個呢?

有沒有一種方法,環境變量,mayavi2可以使用Qt而不是wx?我不會在我的任何本地python腳本中使用wx,因此除非在Canopy中需要,否則我很樂意禁用,如果這是一個選項。

任何想法?

+0

請發表您的編輯作爲答案,它可以回答你自己的問題。 – 2013-05-03 17:51:53

回答

9

運行了Mayavi Gallery中的大部分示例後,我發現我需要通知Traits使用Qt。這是通過使用sys.environment()調用從腳本內設置環境變量完成的。我決定設置環境變量ETS_TOOLKIT到QT4在我的.profile如下:**

export ETS_TOOLKIT=qt4 

Mayavi2現在像宣傳的那樣!

+1

謝謝! Wx在OSX上使用anaconda的python似乎很麻煩。 – 2014-07-04 21:40:55

相關問題