9

SpyderIDE内からMayaviライブラリを実行/使用できません。以下に問題を説明しました。どんな助けでも非常に役に立ちます。(事前にどうもありがとうございました。)

問題を再現する手順:

  1. マヤビライブラリをスクリプトにインポートし(たとえば、「import mayavi.mlab as mlab」を使用)、スクリプトを実行するだけで、この問題が再現されます。
  2. 問題を再現するために、ここにテストコード(このコードはMayavi Webサイトのサンプルコードであることに注意してください)を含めています。

コード

from numpy import sin, cos, mgrid
import mayavi.mlab as mmlab

def f(x,y):
  return sin(x + y) + sin(2*x - y) + cos(3*x + 4*y)
        
x,y = mgrid[-7.:7.05:0.01, -5.:5.05:0.05]
z = f(x,y)
s = mmlab.contour_surf(x,y,z)
mmlab.show()

期待される出力とエラー:

期待される出力:フィギュア付きのマヤビフィギュアウィンドウ。代わりに表示される内容:コンソールウィンドウに次の値エラー(明示するためにメッセージの完全なシーケンスを含めています):

--------------------------エラーメッセージの始まり------------------

Traceback (most recent call last):
  File "C:\PROGRAMSANDEXPERIMENTS\PYTHON\MayaviScripts\Learning\testMayavi.py", line 2, in <module>
    import mayavi.mlab as mmlab
  File "C:\Python27\lib\site-packages\mayavi\mlab.py", line 27, in <module>
    from mayavi.tools.camera import view, roll, yaw, pitch, move
  File "C:\Python27\lib\site-packages\mayavi\tools\camera.py", line 25, in <module>
    from engine_manager import get_engine
  File "C:\Python27\lib\site-packages\mayavi\tools\engine_manager.py", line 12, in <module>
    from mayavi.preferences.api import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\api.py", line 4, in <module>
    from preference_manager import preference_manager
  File "C:\Python27\lib\site-packages\mayavi\preferences\preference_manager.py", line 29, in <module>
    from traitsui.api import View, Group, Item
  File "C:\Python27\lib\site-packages\traitsui\api.py", line 35, in <module>
    from .editors.api import (ArrayEditor, BooleanEditor, ButtonEditor,
  File "C:\Python27\lib\site-packages\traitsui\editors\__init__.py", line 22, in <module>
    from .api import (toolkit, ArrayEditor, BooleanEditor, ButtonEditor,
  File "C:\Python27\lib\site-packages\traitsui\editors\api.py", line 10, in <module>
    from .code_editor import CodeEditor
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 36, in <module>
    class ToolkitEditorFactory ( EditorFactory ):
  File "C:\Python27\lib\site-packages\traitsui\editors\code_editor.py", line 48, in ToolkitEditorFactory
    mark_color = Color( 0xECE9D8 )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 487, in __call__
    return self.maker_function( *args, **metadata )
  File "C:\Python27\lib\site-packages\traits\traits.py", line 1183, in Color
    return ColorTrait( *args, **metadata )
  File "C:\Python27\lib\site-packages\traitsui\toolkit_traits.py", line 7, in ColorTrait
    return toolkit().color_trait( *args, **traits )
  File "C:\Python27\lib\site-packages\traitsui\toolkit.py", line 109, in toolkit
    _toolkit = _import_toolkit(ETSConfig.toolkit)
  File "C:\Python27\lib\site-packages\traitsui\toolkit.py", line 51, in _import_toolkit
    return __import__( name, globals=globals(), level=1 ).toolkit
  File "C:\Python27\lib\site-packages\traitsui\qt4\__init__.py", line 18, in <module>
    import pyface.qt
  File "C:\Python27\lib\site-packages\pyface\qt\__init__.py", line 35, in <module>
    prepare_pyqt4()
  File "C:\Python27\lib\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

----------------------------エラーメッセージの終わり------------------ -

私の環境は次のとおりです。

この問題は、少なくとも次の2つの環境で確認されています。

環境1:

説明:Spyderおよびその他すべてのコンポーネントは、Pythonxyディストリビューション(Windows 7、32ビットマシンではPy(x、y)-2.7.2.3.exe)を使用してインストールされました。Spyderバージョン:2.1.9 Pythonバージョン:2.7.2(32ビット)Qtバージョン:4.7.4、PyQt4(API v1)4.8.6 on Windows Mayaviバージョン:4.1.0

環境2:

説明:64ビットのWindows 7を実行している別のマシンに、64ビットバージョンのEnthoughtEPDディストリビューションをインストールしました。つまり、2.7.3(x64)バージョンのPythonディストリビューションを実行しています。EPDパッケージにはSpyderが含まれていないため、PyQt GPLv4.9.4をインストールした後、手動でSpyderをインストールしました。
Spyderバージョン:2.1.11 Pythonバージョン:2.7.3(64ビット)Qtバージョン:4.8.2、PyQt4(API v2)4.9.4(Windows Mayaviバージョン:4.2.0)

追加情報:

スクリプトは「外部」のスパイダー環境で実行されたときに期待される出力を生成するため、コードは問題ないと確信しています。たとえば、IPythonシェルを使用します。

ありがとうございました。

4

3 に答える 3

7

Avaris さん、お返事ありがとうございます。

今のところ解決策があります(「修正」としてはわかりません)。の次の設定を変更しましたTools->Preferences->Console->External Modules->Enthought Tool Suite->ETS_TOOLKIT: から に変更Qt4wxます。この設定を変更した後、Spyder 内から直接 Mayavi ライブラリと Mayavi プロットを使用してコードを実行できるようになりました。

于 2012-09-17T07:33:05.257 に答える
3

Linux ユーザーの場合はimranalこの問題の回答を参照できます。

export ETS_TOOLKIT=qt4新しい行に追加するだけで~/.bashrcうまくいきます。ファイルを忘れないでくださいsource~/.bashrc

于 2016-03-17T13:26:27.303 に答える
1

これこれによると、のIgnore API change errors (sip.setapi)チェックボックスをアクティブにすることでエラーを修正できますPreferences > Console > External Modules

Spyder2.1.11で動作することをテストしました。

于 2013-01-09T05:36:14.863 に答える