Mayavi: tvtk 场景窗口空白/无响应

创建于 2017-07-27  ·  15评论  ·  资料来源: enthought/mayavi

import os
assert(os.environ['ETS_TOOLKIT'] == 'qt4')
from mayavi import mlab
mlab.test_plot3d()

生成空白/无响应的图形窗口
image

我的系统信息是:

平台:Linux-4.4.0-87-generic-x86_64-with-debian-stretch-sid
Python:2.7.13 |Continuum Analytics, Inc.| (默认,2016 年 12 月 20 日,23:09:15)[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
可执行文件:/home/ktavabi/miniconda3/envs/py2.7/bin/python
CPU:x86_64:24 核
内存:94.4 GB
mne: 0.15.dev0
numpy:1.13.1 {lapack=mkl_intel_lp64,blas=mkl_intel_lp64}
scipy:0.19.1
matplotlib:2.0.2
sklearn:0.18.2
尼巴​​贝尔:2.1.0
玛雅维:4.5.0
pycuda:2017.1
斯库达:0.5.1
熊猫:0.20.3

抄送@Eric89GXL

最有用的评论

我可以用5.9.4确认窗口在 OSX 上什么也没有显示,其中:

pip install pyqt5 --upgrade --no-deps

它升级到 5.10.1 它可以工作。

所有15条评论

你设置%gui qt吗? 如果这是 vanilla Python 而不是 IPython,则需要在末尾添加mlab.show() 。 此处开头记录了设置 gui 工具包的需要:http: //docs.enthought.com/mayavi/mayavi/mlab.html

我设置了环境变量ETS_TOOLKIT=qt4QT_API=pyqt
我正在遵循不同的行为:

(1) 使用 ipython

ipython --gui=qt
from mayavi import mlab

返回

ValueError Traceback(最近一次调用最后一次)
()
----> 1 从 mayavi 导入 mlab

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/mlab.py 在()
25
26 # Mayavi 进口
---> 27 从 mayavi.tools.camera 导入视图、滚动、偏航、俯仰、移动
28 从 mayavi.tools.figure 导入图,clf,gcf,savefig,
29 draw, sync_camera, close, screenshot

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/tools/camera.py 在()
23 # 我们不能使用 gcf,因为它会在相机管理中创建循环导入
24#例程。
---> 25 从 .engine_manager 导入 get_engine
26
27

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/tools/engine_manager.py 在()
10
11 # 本地进口
---> 12 从 mayavi.preferences.api 导入preference_manager
13 从 mayavi.core.registry 导入注册表
14 从 mayavi.core.engine 导入引擎

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/preferences/api.py()
2
3 # 全局 PreferenceManager 实例
----> 4 从 .preference_manager 导入preference_manager
5 从 .bindings 导入 set_scene_preferences、get_scene_preferences

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/preferences/preference_manager.py 在()
27 从 traits.etsconfig.api 导入 ETSConfig
28 从 traits.api 导入 HasTraits, Instance
---> 29 从 traitsui.api 导入视图、组、项
30 从 apptools.preferences.api 导入(ScopedPreferences、IPreferences、
31 PreferencesHelper)

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/api.py 在()
34
35 尝试:
---> 36 从 .editors.api 导入 ArrayEditor
37 除了 ImportError:
38 # ArrayEditor 依赖于 numpy,如果 numpy 不存在则忽略。

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/__init__.py()
21
22 尝试:
---> 23 从 .api 导入 ArrayEditor
24 除了 ImportError:
25 次通过

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/api.py()
22 从 .button_editor 导入 ButtonEditor
23 从 .check_list_editor 导入 CheckListEditor
---> 24 从 .code_editor 导入 CodeEditor
25 从 .color_editor 导入 ColorEditor
26 从 .compound_editor 导入 CompoundEditor

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/code_editor.py()
34 #------------------------------------------------ -------------------------------------------
35
---> 36 类 ToolkitEditorFactory(EditorFactory):
37 """ 代码编辑器的编辑器工厂。
38"""

ToolkitEditorFactory() 中的 /home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/code_editor.py
46
47 # 标记线的背景颜色
---> 48 标记颜色 = 颜色(0xECE9D8)
49
50 # 包含当前选定行的对象特征(可选)

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traits/traits.pyc in __call__(self, args, * metadata)
520
521
--> 522 返回 self.maker_function( args, * metadata )
523
524 类 TraitImportError (TraitFactory):

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traits/traits.pyc 颜色(参数,*元数据)
1234 从 traitsui.toolkit_traits 导入 ColorTrait
1235
-> 1236 返回颜色特征(参数,*元数据)
1237
第1238章

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/toolkit_traits.pyc in ColorTrait( args, * traits)
5
6 def ColorTrait ( args, * traits ):
----> 7 return toolkit().color_trait( args, * traits)
8
9 def RGBColorTrait ( args, * traits):

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/toolkit.pyc in toolkit(*toolkits)
150 如果 ETSConfig.toolkit:
151 # 如果已经为 ETSConfig 设置了工具包,则使用它:
--> 152 _toolkit = _import_toolkit(ETSConfig.toolkit)
第153章
154 其他:

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/toolkit.pyc in _import_toolkit(name)
81
82 def _import_toolkit(名称):
---> 83 return __import__(name, globals=globals(), level=1).toolkit
84
85

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/qt4/__init__.py 在()
16 # 在完成任何其他操作之前导入 pyface.qt 以便 sipapi
17#如果需要可以正确设置
---> 18 导入pyface.qt
19
20 #------------------------------------------------ ----------------------------

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/pyface/qt/__init__.py()
38
39 elif qt_api == 'pyqt':
---> 40 准备_pyqt4()
41
42 elif qt_api!='pyside':

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/pyface/qt/__init__.py 在 prepare_pyqt4()
15 # 设置 PySide 兼容的 API。
16 进口小口
---> 17 sip.setapi('QDate', 2)
18 sip.setapi('QDateTime', 2)
19 sip.setapi('QString', 2)

ValueError:API 'QDate' 已设置为版本 1

到目前为止, from pyface.qt import QtGui, QtCore或取消设置 QT_API 都没有解决这个问题。

(2) 在常规的 python 控制台中

from mayavi import mlab
mlab.test_plot3d()

作品!

(3) 在 Pycharm IDE python 控制台中

from mayavi import mlab
mlab.test_plot3d()
mlab.show()

片段工作是必需的。

所以在 IPython 上,IPython 似乎将版本设置为 2。你可以试试这个:

$ ipython

from mayavi import mlab
%gui qt
mlab.test_plot3d()

也许这会在 IPython 将其设置为 1 之前将 QT API 设置为 2。技术上并根据此处的 IPython 文档:http: //ipython.readthedocs.io/en/stable/interactive/reference.html#pyqt -and- pyside 这不应该发生,但让我们看看。

谢谢@prabhuramachandran成功了……现在。

如果后端、绑定和可视化模块之间的事务状态不是那么流畅,那就太好了。 因此,我目前正在尝试对我打算(或希望)冻结在工作状态的项目采用使用虚拟环境的做法。 根据我的经验,对于任何给定的更新或安装,例如 ipython 或 matplotlib,都不能保证可视化堆栈保持完整。 也许这只是我的天真,但我不得不承认我确实花了很多时间进行故障排除和修复损坏的东西😞所以我总是很想知道开发人员如何倾向于保持他们的“环境”正常工作。

仅供参考 cc @kingjr @choldgraf @Eric89GXL

所以我总是很想知道开发人员如何倾向于保持他们的“环境”正常工作。

@choldgraf——哈哈

@kambysese——好吧,我们自己的代码并没有真正改变太多。 问题是有 pyside、pyqt、pyqt4、pyqt5、qtdate(等等)、wxPython(2、3,现在是 4!)。 我认为我们应该在某处仔细记录这一点。 你有什么建议吗? 把它放在这里: http ://docs.enthought.com/mayavi/mayavi/mlab.html 可以吗?

@prabhuramachandran为什么现在在 OSX 上会发生这种情况? 不管%gui qt魔法

screen shot 2018-04-25 at 11 05 30 am

不知道,事情对我来说一直很好。 什么版本的 PyQt5? PyQt5 并没有我想的那么稳定,我经常遇到奇怪的问题。 PyQt5 (5.10.1) 在 OSX 上为我工作,但在我需要降级到 5.9.2 的 Windows 上崩溃。

我正在使用 PyQt 5.9.2

有趣的是,它曾经对我有用,但工具栏会到处浮动,升级到 PyQt 5.10.1 为我修复了它。 但是,我会得到一个有效的可视化,只是工具栏被搞砸了。 尝试更新到 PyQt5.10.1。

由于依赖关系, conda对该选项不满意。 我可以尝试,但我很确定其他东西会坏掉。

我一直在使用pip install PyQt5

nvmd 5.9.2 是默认 conda 通道上可用的最高版本。

我可以用5.9.4确认窗口在 OSX 上什么也没有显示,其中:

pip install pyqt5 --upgrade --no-deps

它升级到 5.10.1 它可以工作。

@larsoner——谢谢! 多么痛苦。 不要在 Windows 上使用 5.10.1,尤其是在 appveyor 上。

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