虽然文档没有明确提到它,但我想应该可以使用 qt 在 IPython (v. 2.0.0) 中运行 Mayavi ......但是
$ ETS_TOOLKIT=qt4 ipython2 --gui=qt4 -c 'from mayavi import mlab'
<...>
/usr/lib/python2.7/site-packages/pyface/qt/__init__.py in prepare_pyqt4()
15 # Set PySide compatible APIs.
16 import sip
---> 17 sip.setapi('QString', 2)
18 sip.setapi('QVariant', 2)
19
ValueError: API 'QString' has already been set to version 1
如果您 (1) 安装 pyside 和 (2) 卸载 PyQt 或还设置QT_API=pyside
不! 您只需在 ipython 启动 qt 事件循环之前将 sip 设置为 API #2(通常在导入 matplotlib 时)。 您可以使用环境变量、命令行参数或以编程方式执行此操作。
此外,如果你使用像 spyder 这样的 IDE,你可以自动设置它。
这可能有帮助: http ://ipython.readthedocs.org/en/stable/interactive/reference.html#pyqt -and-pyside
不确定它是否真的是一个错误,但它并没有真正的交流,所以它至少是“按文档修复”或“按错误消息修复”。
恕我直言,这不是错误,但我们应该将此 ipython 文档链接添加到 mayavi 文档并提及--gui=qt
标志取决于 PySide/PyQt 后端(至少在这里:http://docs.enthought.com/ mayavi/mayavi/mlab.html 还有其他几个地方)
我现在已经关闭了,但我不想打开一个新问题,因为它看起来已经解决了。 但是,我尝试执行我在此处阅读的所有内容(更改ETS_TOOLKIT
和QT_API
)和提供的链接,但错误仍在继续。
我使用mayavi 4.5.0 py27_0
和python 2.7.12
,全部通过conda
。 我尝试使用ipython
和jupyter notebook
,但它显示了相同的消息( API 'QString' has already been set to version 1
)。
我真的不知道我缺少什么来解决这个问题。
@victortxa——你还能看到#532中的讨论吗?