Mayavi: Mayavi 与 IPython 和 Qt

创建于 2014-04-12  ·  7评论  ·  资料来源: enthought/mayavi

虽然文档没有明确提到它,但我想应该可以使用 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

所有7条评论

如果您 (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_TOOLKITQT_API )和提供的链接,但错误仍在继续。
我使用mayavi 4.5.0 py27_0python 2.7.12 ,全部通过conda 。 我尝试使用ipythonjupyter notebook ,但它显示了相同的消息( API 'QString' has already been set to version 1 )。
我真的不知道我缺少什么来解决这个问题。

@victortxa——你还能看到#532中的讨论吗?

此页面是否有帮助?
0 / 5 - 0 等级