Mayavi 不会从 Spyder 内部逃跑:抱怨"ValueError: API 'QString' ..."



我无法在Spyder IDE中运行/使用Mayavi库。我已经在下面描述了这个问题。任何帮助都是非常有用的。(提前非常感谢。)

重现问题的步骤:

  1. 只需在脚本中导入Mayavi库(例如,使用"import Mayavi.mlab as mlab")并执行脚本就会重现此问题
  2. 我在这里包含了一个测试代码(注意,这个代码是Mayavi网站上的示例代码)来重现这个问题:

代码

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()

预期输出和错误:

预期输出:带有图形的Mayavi图形窗口。相反,我看到的是:控制台窗口中的以下Value错误(为了显式,我包含了完整的消息序列):

----------------------错误消息的开始------------------

Traceback (most recent call last):
  File "C:PROGRAMSANDEXPERIMENTSPYTHONMayaviScriptsLearningtestMayavi.py", line 2, in <module>
    import mayavi.mlab as mmlab
  File "C:Python27libsite-packagesmayavimlab.py", line 27, in <module>
    from mayavi.tools.camera import view, roll, yaw, pitch, move
  File "C:Python27libsite-packagesmayavitoolscamera.py", line 25, in <module>
    from engine_manager import get_engine
  File "C:Python27libsite-packagesmayavitoolsengine_manager.py", line 12, in <module>
    from mayavi.preferences.api import preference_manager
  File "C:Python27libsite-packagesmayavipreferencesapi.py", line 4, in <module>
    from preference_manager import preference_manager
  File "C:Python27libsite-packagesmayavipreferencespreference_manager.py", line 29, in <module>
    from traitsui.api import View, Group, Item
  File "C:Python27libsite-packagestraitsuiapi.py", line 35, in <module>
    from .editors.api import (ArrayEditor, BooleanEditor, ButtonEditor,
  File "C:Python27libsite-packagestraitsuieditors__init__.py", line 22, in <module>
    from .api import (toolkit, ArrayEditor, BooleanEditor, ButtonEditor,
  File "C:Python27libsite-packagestraitsuieditorsapi.py", line 10, in <module>
    from .code_editor import CodeEditor
  File "C:Python27libsite-packagestraitsuieditorscode_editor.py", line 36, in <module>
    class ToolkitEditorFactory ( EditorFactory ):
  File "C:Python27libsite-packagestraitsuieditorscode_editor.py", line 48, in ToolkitEditorFactory
    mark_color = Color( 0xECE9D8 )
  File "C:Python27libsite-packagestraitstraits.py", line 487, in __call__
    return self.maker_function( *args, **metadata )
  File "C:Python27libsite-packagestraitstraits.py", line 1183, in Color
    return ColorTrait( *args, **metadata )
  File "C:Python27libsite-packagestraitsuitoolkit_traits.py", line 7, in ColorTrait
    return toolkit().color_trait( *args, **traits )
  File "C:Python27libsite-packagestraitsuitoolkit.py", line 109, in toolkit
    _toolkit = _import_toolkit(ETSConfig.toolkit)
  File "C:Python27libsite-packagestraitsuitoolkit.py", line 51, in _import_toolkit
    return __import__( name, globals=globals(), level=1 ).toolkit
  File "C:Python27libsite-packagestraitsuiqt4__init__.py", line 18, in <module>
    import pyface.qt
  File "C:Python27libsite-packagespyfaceqt__init__.py", line 35, in <module>
    prepare_pyqt4()
  File "C:Python27libsite-packagespyfaceqt__init__.py", line 17, in prepare_pyqt4
    sip.setapi('QString', 2)
  ValueError: API 'QString' has already been set to version 1

-------------------------错误消息结束-----------------------

我的环境如下:

至少在以下两种环境中观察到了这个问题:

环境1:

说明:Spyder和所有其他组件都是使用Pythonxy发行版(Py(x,y)-27.7.2.3.exe)在Windows 7 32位计算机上安装的。Spyder版本:2.1.9Python版本:2.7.2(32位)Qt版本:4.7.4,PyQt4(API v1)4.8.6在Windows上Mayavi版本:4.1.0

环境2:

描述:在一台运行64位Windows7的独立机器上,我安装了64位版本的Enthought EPD发行版。因此,它正在运行2.7.3(x64)版本的Python发行版。由于EPD软件包不包括Spyder,我在安装PyQt GPLv4.9.4后手动安装了Spyder。
Spyder版本:2.1.11Python版本:2.7.3(64位)Qt版本:4.8.2,PyQt4(API v2)4.9.4在Windows上Mayavi版本:4.2.0

附加信息:

我确信代码是好的,因为脚本在执行时会产生预期的输出;外部";spyder环境。例如,使用IPython shell。

谢谢。

感谢Avaris的回复。

我现在有一个解决方案(我不确定它是否是"修复")。我修改了Tools->Preferences->Console->External Modules->Enthought Tool Suite->ETS_TOOLKIT中的以下设置:从Qt4更改为wx。更改此设置后,我可以直接在Spyder中使用Mayavi库和Mayavi绘图执行代码。

对于linux用户,imranal在这个问题上的答案可以参考。

只需将CCD_ 5添加到CCD_。不要忘记source~/.bashrc文件!

根据这个和这个,可以通过激活Preferences > Console > External Modules中的Ignore API change errors (sip.setapi)复选框来修复错误。

我已经测试过它确实适用于Spyder 2.1.11。

相关内容

  • 没有找到相关文章

最新更新