Хотя в документации это не упоминается явно, я предполагаю, что Mayavi можно будет запустить в IPython (v. 2.0.0) с помощью qt ... но
$ 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
Нет! Вам просто нужно установить sip на API # 2, прежде чем ipython запустит цикл событий qt (обычно при импорте matplotlib). Вы можете сделать это, используя переменные среды, аргументы командной строки или программно.
Более того, если вы используете IDE, например spyder, вы можете установить это автоматически.
Это может помочь: http://ipython.readthedocs.org/en/stable/interactive/reference.html#pyqt -and-pyside
Не уверен, что это на самом деле ошибка, но она не совсем коммуникативная, так что, по крайней мере, это либо «исправление по документу», либо «исправление по сообщению об ошибке».
IMHO, это не ошибка, но мы должны добавить эту ссылку на документ ipython в документ mayavi и упомянуть, что флаг --gui=qt
зависит от бэкэнда PySide / PyQt (по крайней мере, здесь: http://docs.enoughtt.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.