PyQt5 无法作为 Mayavi 使用 Python 3.6 的“合适的 UI 工具包”

uho*_*hoh 5 python pyqt mayavi pyqt5

我想运行 SfePy 演示,但使用 Mayavi 显示时出现问题。请参阅http://sfepy.org/doc-devel/installation.html#requirements

我有:

  • 创建了一个 anaconda Python 3.6 环境(根据这个答案)使用conda create --name SfePy36 python=3.6
  • 安装 mayavi 使用 conda install -c conda-forge mayavi

  • 安装 pip3 使用python3 get-pip.py(从这里

  • 安装 PyQt5 使用 pip3 install PyQt5

我不知道如何独立检查 PyQt5 是否安装正确。如果我重复,pip3 install PyQt5它会告诉我它已经安装,但这并不意味着它已正确完成或位于正确的位置。


当我运行下面非常简单的 mayavi 测试时,出现以下错误。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site- packages/mayavi/tools/sources.py", line 1162, in scalar_field
    return tools.add_dataset(data_source.m_data, name, **kwargs)
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/tools.py", line 91, in add_dataset
engine = _get_engine_from_kwarg(kwargs)
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/tools.py", line 36, in _get_engine_from_kwarg
    gcf()
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/figure.py", line 114, in gcf
engine = get_engine()
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/engine_manager.py", line 92, in get_engine
return self.new_engine()
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/engine_manager.py", line 137, in new_engine
check_backend()
  File "/Users/david/anaconda3/envs/SfePy36/lib/python3.6/site-packages/mayavi/tools/engine_manager.py", line 40, in check_backend
raise ImportError(msg)
ImportError: Could not import backend for traitsui.  Make sure you
    have a suitable UI toolkit like PyQt/PySide or wxPython
    installed.
Run Code Online (Sandbox Code Playgroud)

简单演示失败(从这里开始):

from mayavi import mlab
import numpy as np

x, y, z = np.mgrid[-10:10:20j, -10:10:20j, -10:10:20j]
s = np.sin(x*y*z)/(x*y*z)

mlab.pipeline.volume(mlab.pipeline.scalar_field(x,y,z,s))
mlab.show()
Run Code Online (Sandbox Code Playgroud)

Pat*_*l75 2

您可能必须使用 wxPython 而不是 PyQt/PySide。查看安装指南,第 2 点。