على الرغم من أن المستندات لا تذكرها صراحةً ، أعتقد أنه من الممكن تشغيل Mayavi في IPython (الإصدار 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 doc هذا إلى mayavi doc ونذكر علامة --gui=qt
تعتمد على الواجهة الخلفية PySide / PyQt (على الأقل هنا: http://docs.enthought.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.