ValueError: cannot set toolkit to wx because it has already been set to qt4

ValueError: cannot set toolkit to wx because it has already been set to qt4

下面导入

from mayavi import mlab

生成 value error

我使用 setuptools (as described here) 安装了 Mayavi。 gui 工作正常(这里和那里有一些错误,但我仍然可以使用模块等)我猜安装过程中有些事情不顺利。有什么建议可以修复我的安装(如果这是问题所在)?

编辑 1:

我卸载了 mayavi 并重新安装了它(使用 pip),但 valueError 仍然存在。

编辑 2:

我安装的系统是虚拟的Ubuntu 15.04(使用VMware 6.0.6)。我已经粘贴了 pip install mayavi output here.

编辑 3: 重新安装以前版本的 Mayavi : 4.3.1 后,我仍然得到同样的错误。我正在使用 Python : 2.7.9.

不知道我的回答现在是否相关,但这对我有帮助: 我的机器上有 PyQt4,但我已经为 Mayavi 安装了 wxPython,因此它们存在冲突。我已经删除了 wxPython,现在它运行得非常完美。

SO 上有一个 post:

How to get MayaVi2 to default to/use Qt rather than wx?

它显示了如何设置 qt4,而不必卸载 wxPython(正如其他答案所建议的那样):

export ETS_TOOLKIT=qt4

我在 Mayavi 的问题部分发现了它 github : Issue 265

伙计,也许你犯了和我一样的愚蠢错误,哈哈

同样的错误

我试图使用 WXAgg 作为 matplotlib 和 traitsui 的后端,但我得到了 RuntimeError: Importing from wx backend after selecting qt4 backend。导入部分如下:

import matplotlib
# We want matplotlib to use a wxPython backend
matplotlib.use('WXAgg')
import wx

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
from traits.api import Instance
from traitsui.wx.editor import Editor
from traitsui.wx.basic_editor_factory import BasicEditorFactory

然后我尝试使用以下代码手动更改后端:

from traits.etsconfig.api import ETSConfig
ETSConfig.toolkit = 'wx'

你猜怎么着,我和你一样ValueError: cannot set toolkit to wx because it has already been set to qt4

出发前检查

经过几个小时的搜索和调试,我几乎要放弃了,直到我突然想起我曾经在系统范围内设置过这个变量。我多么愚蠢,没有按照这个提示检查 ETS_TOOLKIT!

再次遇到此错误的任何人,请使用 Linux 上的 echo $ETS_TOOLKIT 或 Windows 上的 echo %ETS_TOOLKIT% 检查您的系统设置。如果它显示 qt4,那么这是你的错导致了这个错误。