Mayavi: jendela adegan tvtk kosong/tidak responsif

Dibuat pada 27 Jul 2017  ·  15Komentar  ·  Sumber: enthought/mayavi

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

menghasilkan jendela gambar kosong/tidak responsif
image

Info sistem saya adalah:

Platform: Linux-4.4.0-87-generic-x86_64-with-debian-stretch-sid
Python: 2.7.13 |Continuum Analytics, Inc.| (default, 20 Des 2016, 23:09:15) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]
Dapat dieksekusi: /home/ktavabi/miniconda3/envs/py2.7/bin/python
CPU: x86_64: 24 core
Memori: 94.4 GB
mne: 0.15.dev0
numpy: 1.13.1 {lapack=mkl_intel_lp64, blas=mkl_intel_lp64}
sip: 0.19.1
matplotlib: 2.0.2
sklearn: 0.18.2
nibabel: 2.1.0
mayavi: 4.5.0
pycuda: 2017.1
skcuda: 0.5.1
panda: 0.20.3

cc @Eric89GXL

Komentar yang paling membantu

Saya dapat mengonfirmasi dengan 5.9.4 jendela tidak menunjukkan apa pun di OSX, dengan:

pip install pyqt5 --upgrade --no-deps

Ini meningkatkan ke 5.10.1 berfungsi.

Semua 15 komentar

Apakah Anda menetapkan %gui qt ? Jika ini adalah Vanilla Python dan bukan IPython, Anda perlu menambahkan mlab.show() di bagian akhir. Kebutuhan untuk mengatur gui toolkit didokumentasikan di awal di sini: http://docs.enthought.com/mayavi/mayavi/mlab.html

Saya mengatur variabel lingkungan ETS_TOOLKIT=qt4 dan QT_API=pyqt
Saya mendapatkan perilaku yang berbeda berikut:

(1) Dengan ipython

ipython --gui=qt
from mayavi import mlab

kembali

ValueError Traceback (panggilan terakhir terakhir)
di dalam()
----> 1 dari mayavi import mlab

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/mlab.py di()
25
26 # impor Mayavi
---> 27 dari mayavi.tools.camera import view, roll, yaw, pitch, move
28 dari mayavi.tools.figure import figure, clf, gcf, savefig,
29 gambar, sinkron_kamera, tutup, tangkapan layar

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/tools/camera.py di()
23 # Kami tidak dapat menggunakan gcf, karena ini membuat impor melingkar dalam manajemen kamera
24 # rutinitas.
---> 25 dari .engine_manager impor get_engine
26
27

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/tools/engine_manager.py di()
10
11 # Impor lokal
---> 12 dari mayavi.preferences.api impor preferensi_manager
13 dari mayavi.core.registry import registry
14 dari mayavi.core.engine import Engine

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/preferences/api.py di()
2
3 # Contoh PreferenceManager global
----> 4 dari .preference_manager mengimpor preferensi_manager
5 dari .bindings impor set_scene_preferences, get_scene_preferences

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/mayavi/preferences/preference_manager.py di()
27 dari ciri-ciri.etsconfig.api impor ETSConfig
28 dari ciri-ciri.api impor HasTraits, Instance
---> 29 dari traitui.api import View, Group, Item
30 dari apptools.preferences.api import (ScopedPreferences, IPreferences,
31 PreferensiPembantu)

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/api.py di()
34
35 coba:
---> 36 dari .editors.api impor ArrayEditor
37 kecuali ImportError:
38 # ArrayEditor bergantung pada numpy, jadi abaikan jika numpy tidak ada.

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/__init__.py di()
21
22 mencoba:
---> 23 dari .api impor ArrayEditor
24 kecuali ImportError:
25 lulus

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

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/code_editor.py di()
34 #------------------------------------------------ -------------------------------
35
---> 36 kelas ToolkitEditorFactory ( EditorFactory ):
37 """ Pabrik editor untuk editor kode.
38 """

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/editors/code_editor.py di ToolkitEditorFactory()
46
47 # Warna latar belakang untuk menandai garis
---> 48 mark_color = Warna( 0xECE9D8 )
49
50 # Sifat objek yang berisi baris yang dipilih saat ini (opsional)

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traits/traits.pyc di __call__(self, args, * metadata)
520
521 def __call__ ( diri, argumen, * metadata ):
-> 522 mengembalikan self.maker_function( args, * metadata )
523
524 kelas TraitImportError ( TraitFactory ):

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traits/traits.pyc in Color( args, * metadata)
1234 dari traitui.toolkit_traits mengimpor ColorTrait
1235
-> 1236 mengembalikan ColorTrait( args, * metadata )
1237
1238 Warna = Pabrik Sifat ( Warna )

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

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/toolkit.pyc di toolkit(*toolkit)
150 jika ETSConfig.toolkit:
151 # Jika sebuah toolkit telah diset untuk ETSConfig, maka gunakan itu:
--> 152 _toolkit = _import_toolkit(ETSConfig.toolkit)
153 kembalikan _toolkit
154 lainnya:

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

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/traitsui/qt4/__init__.py di()
16 # import pyface.qt sebelum melakukan hal lain agar sipapi
17 # dapat diatur dengan benar jika diperlukan
---> 18 impor pyface.qt
19
20 #------------------------------------------------ ----------------------------

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

/home/ktavabi/miniconda3/envs/py2.7/lib/python2.7/site-packages/pyface/qt/__init__.py di prepare_pyqt4()
15 # Setel API yang kompatibel dengan PySide.
16 sip impor
---> 17 sip.setapi('Tanggal Q', 2)
18 sip.setapi('QDateTime', 2)
19 sip.setapi('QString', 2)

ValueError: API 'QDate' telah disetel ke versi 1

Sejauh ini baik from pyface.qt import QtGui, QtCore atau unsetting QT_API tidak menyelesaikan ini.

(2) Di konsol python biasa

from mayavi import mlab
mlab.test_plot3d()

bekerja!

(3) Dalam konsol python Pycharm IDE

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

Diperlukan agar cuplikan berfungsi.

Jadi pada IPython tampaknya IPython sedang mengatur versi ke 2. Bisakah Anda mencoba ini:

$ ipython

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

Mungkin ini akan mengatur API QT ke 2 sebelum IPython dapat mengaturnya ke 1. Secara teknis dan menurut dokumen IPython di sini: http://ipython.readthedocs.io/en/stable/interactive/reference.html#pyqt -and- pyside ini seharusnya tidak terjadi tetapi mari kita lihat.

Terima kasih @prabhuramachandran yang melakukan trik ... untuk saat ini.

Akan lebih baik jika keadaan antara backend, binding, dan modul yaitu tidak begitu lancar. Jadi saya saat ini mencoba untuk mengadopsi praktik bekerja dengan envs virtual untuk proyek-proyek yang saya berniat (atau berharap) untuk membekukan dalam keadaan bekerja. Yang mengatakan dalam pengalaman saya untuk setiap pembaruan atau pemasangan yang diberikan misalnya, ipython atau matplotlib tidak ada jaminan tumpukan visualisasi tetap utuh. Mungkin itu hanya kenaifan saya, tetapi saya harus mengakui bahwa saya menghabiskan banyak waktu untuk memecahkan masalah dan memperbaiki hal-hal yang rusak Jadi saya selalu ingin tahu tentang bagaimana pengembang cenderung menjaga 'lingkungan' mereka tetap berfungsi.

FYI cc @kingjr @choldgraf @Eric89GXL

Jadi saya selalu ingin tahu tentang bagaimana pengembang cenderung menjaga 'lingkungan' mereka tetap berfungsi.

@choldgraf -- LOL!

@kambysese -- Nah, kode kita sendiri tidak banyak berubah. Masalahnya adalah ada pyside, pyqt, pyqt4, pyqt5, qtdate (dan yang lainnya), wxPython (2, 3, sekarang 4!). Saya pikir kita harus mendokumentasikan ini dengan hati-hati di suatu tempat. Apakah anda punya saran? Apakah meletakkannya di sini: http://docs.enthought.com/mayavi/mayavi/mlab.html boleh?

@prabhuramachandran Mengapa ini sekarang terjadi di OSX? terlepas dari sihir %gui qt

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

Tidak tahu, hal-hal telah bekerja dengan baik untuk saya. PyQt5 versi berapa? PyQt5 tidak sestabil yang saya inginkan, saya sering mengalami masalah aneh. PyQt5 (5.10.1) berfungsi untuk saya di OSX tetapi macet di Windows di mana saya harus menurunkan versi ke 5.9.2.

Saya menggunakan PyQt 5.9.2

Menarik, dulu berfungsi untuk saya tetapi bilah alat akan melayang di semua tempat, memutakhirkan ke PyQt 5.10.1 memperbaikinya untuk saya. Namun, saya akan mendapatkan visualisasi yang berfungsi, hanya bilah alat yang kacau. Coba perbarui ke PyQt5.10.1.

conda tidak senang dengan opsi itu karena ketergantungan. Saya dapat mencoba tetapi saya cukup yakin sesuatu yang lain akan rusak.

Saya telah menggunakan pip install PyQt5 .

nvmd 5.9.2 adalah versi tertinggi yang tersedia di saluran conda default.

Saya dapat mengonfirmasi dengan 5.9.4 jendela tidak menunjukkan apa pun di OSX, dengan:

pip install pyqt5 --upgrade --no-deps

Ini meningkatkan ke 5.10.1 berfungsi.

@larsoner -- terima kasih! Apa yang menyakitkan. Jangan gunakan 5.10.1 di windows terutama di appveyor.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

Mallcock1 picture Mallcock1  ·  10Komentar

stefanoborini picture stefanoborini  ·  11Komentar

dnacombo picture dnacombo  ·  7Komentar

igamenovoer picture igamenovoer  ·  7Komentar

aestrivex picture aestrivex  ·  9Komentar