Embora os documentos não mencionem isso explicitamente, acho que deve ser possível executar Mayavi em IPython (v. 2.0.0) com qt ... mas
$ 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
Deve ficar bem se você (1) instalar o pyside e (2) desinstalar o PyQt ou também definir QT_API=pyside
Não! Você simplesmente tem que definir sip para API # 2 antes que o ipython inicie o loop de eventos qt (normalmente ao importar matplotlib). Você pode fazer isso usando variáveis de ambiente, argumentos de linha comuns ou programaticamente.
Além disso, se você usar um IDE como o spyder, pode definir isso automaticamente.
Isso pode ajudar: http://ipython.readthedocs.org/en/stable/interactive/reference.html#pyqt -and-pyside
Não tenho certeza se é realmente um bug, mas não é realmente comunicativo, então é uma "correção por doc" ou uma "correção por mensagem de erro", pelo menos.
IMHO, isso não é um bug, mas devemos adicionar este link de doc ipython ao doc mayavi e mencionar que o sinalizador --gui=qt
depende do backend PySide / PyQt (pelo menos aqui: http://docs.enthought.com/ mayavi / mayavi / mlab.html e há alguns outros lugares)
Eu agora está fechado, mas não quero abrir um novo problema, pois parece resolvido. No entanto, tentei fazer tudo o que li aqui (alterando ETS_TOOLKIT
e QT_API
) e nos links fornecidos, mas o erro continua.
Estou usando mayavi 4.5.0 py27_0
com python 2.7.12
, todos instalados por meio de conda
. Tentei usar ipython
e também jupyter notebook
, mas mostra a mesma mensagem ( API 'QString' has already been set to version 1
).
Realmente não sei o que estou perdendo para resolver isso.
@victortxa - você também pode ver a discussão em # 532.