Mayavi: Dukungan Python 3

Dibuat pada 4 Okt 2013  ·  72Komentar  ·  Sumber: enthought/mayavi

Adakah rencana untuk mendukung Python 3 untuk mayavi ?

Python akan segera merilis Python 3.4. Saya pikir Python 3 sekarang sangat matang dan perpustakaan pihak ketiga utama (numpy, scipy, panda, matplotlib, dll) mendukungnya sekarang.

Saya juga perlahan-lahan memindahkan semua proyek saya ke Python 3. Ini adalah tugas yang cukup sederhana dengan aplikasi 2to3 untuk proyek "kecil". Anda kadang-kadang bisa mendapatkan konflik dengan lib std lama atau masalah dengan aliran unicode/string tetapi tidak ada yang buruk ...

Saya kira akan sedikit lebih rumit untuk memindahkan mayavi dan proyek-proyek terkait lainnya tetapi seharusnya tidak menjadi sesuatu yang terlalu sulit untuk dilakukan dalam waktu jangka menengah.

Saya tidak ingin berbicara untuk orang lain tetapi saya pikir banyak orang menunggu mayavi untuk memindahkan proyek mereka ke Python 3.

"Jangan menunggu sampai Python 4 dirilis, tolong ..."

:-)

Bersulang

Komentar yang paling membantu

Anda juga harus dapat mengatur variabel env dari python sebelum mengimpor mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Itu berhasil. Thx @jenshnielsen =:-)

Saya lebih suka pendekatan dalam skrip ini dibandingkan dengan melakukan pengaturan OS seluruh sistem dari variabel lingkungan QT_API , karena saya mungkin masih ingin melakukan pengembangan pyqt5 di lingkungan root Anaconda saya.

Jadi, ringkasan untuk setiap orang miskin seperti saya yang berjuang untuk menjalankan mayavi di anaconda python 3.5, berikut adalah pendekatan yang saya sarankan yang disaring dari saran bermanfaat di komentar sebelumnya:

  1. Buat env baru (oldqt) yang diturunkan ke pyqt4 dengan menjalankan perintah berikut di terminal env root anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Beralih ke env yang baru dibuat:
    activate oldqt untuk OS Windows
    source activate oldqt untuk Mac/linux OS

  3. instal mayavi menggunakan penginstal paket menpo:
    conda install -c menpo mayavi

  4. Gunakan oldqt env untuk menjalankan skrip python mayavi Anda, dan sertakan cuplikan di bawah ini di bagian atas skrip ini untuk memastikan bahwa API QT yang valid untuk mayavi ditentukan:

import os
os.environ["QT_API"] = "pyqt"

Semua 72 komentar

@hadim Rencana untuk Mayavi di Python 3 ditautkan ke VTK yang tersedia di Python 3. Peta jalan untuk sampai ke sana tidak jelas. Lihat http://www.vtk.org/Wiki/VTK/Python_Wrapping_FAQ.

:+1:

:+1:

:+1:

Saya tidak berpikir :thumbsup: di sini tidak ada gunanya. Anda sebaiknya mencoba meyakinkan Kitware untuk mendukung python3 di VTK. Tanpa itu tidak ada peluang untuk versi python3 dari Mayavi.

Saya tidak berpikir :thumbsup: di sini tidak ada gunanya. Anda sebaiknya mencoba
meyakinkan Kitware untuk mendukung python3 di VTK. Tanpa itu tidak ada
kesempatan untuk versi python3 dari Mayavi.

Terima kasih telah menekankan itu!

Mungkin Anda dapat memberikan tautan ke laporan bug yang tepat di VTK tentang porting ke Python 3, untuk mengarahkan pengguna yang mengatakan +1 di sana?

Sebagai catatan saya membuka tiket di VTK bug tracker : http://www.vtk.org/Bug/view.php?id=15554

Kabar baik! David Gobbi (pengelola binding VTK Python) telah menanggapi tiket bug itu dan menyatakan bahwa dia telah mendapatkan permintaan penggabungan untuk menyiapkan binding untuk dukungan Py3, dan dia secara konkret mengerjakan dukungan Py3 mulai akhir pekan ini:
http://www.vtk.org/Bug/view.php?id=15554#c34787

Saya sepenuhnya mengerti bahwa ini hanyalah awal dari proses dan mungkin perlu beberapa waktu sebelum dukungan Python 3 mendarat di rilis VTK, tetapi saya ingin tahu apakah ada sesuatu yang dapat dilakukan Mayavi secara aktif untuk mempersiapkan diri untuk Python 3? Saya kira akan ada perubahan yang diperlukan pada basis kode Mayavi itu sendiri untuk mendukung Python 3, apakah layak untuk memulai diskusi tentang apa pekerjaan ini?

Terima kasih @jabooth ,

Sejauh yang saya tahu gambaran lengkap untuk Mayavi pindah ke Python 3 tergantung pada dependensi utama yang mendukung python 3. Status saat ini adalah:

  • [ ] python vtk
  • [x] sifat
  • [x] ciri-ciri
  • [x] pyface
  • [ ] bayangkan

Binding Python 3 VTK adalah bagian utama dan fakta bahwa ada pekerjaan yang sedang berlangsung adalah kabar baik, tetapi tanpa ikatan yang tersedia pada rilis stabil VTK, akan sangat sulit untuk bekerja dan menguji pada Mayavi yang ramah python 3.

Selanjutnya, Mayavi sendiri sangat bergantung pada ciri-ciri, ciri-ciri dan pyface yang perlu juga mendukung python 3. Sementara ada pekerjaan yang sedang berlangsung di perpustakaan ini dukungan belum ada.

_Nevertheless_, apa yang bisa kita lakukan saat ini, (dan @dmsurti sudah mulai) adalah untuk memperbaiki bug yang tertunda meningkatkan cakupan pengujian dan menyederhanakan basis kode Mayavi sehingga ketika dependensi tersedia di python 3 upaya untuk memindahkan Mayavi ke Python 3 akan menjadi lebih sedikit.

Anda juga dapat melakukan hal-hal seperti beralih ke "dari impor mendatang
print_function, division", singkirkan semua impor relatif, dan alihkan
semuanya ke enam.

Saya pikir melakukan apa pun sekarang adalah buang-buang waktu. Mayavi tidak melakukan terlalu banyak hal yang tidak dapat diperbaiki dalam satu hari kerja, masalah yang lebih besar adalah VTK yang mendukung Python 3 dan segera setelah itu tersedia, kami akan membuat perubahan yang diperlukan. Tanpa VTK, kami tidak akan dapat menguji. Saya mengetahui pekerjaan terbaru David Gobbi tetapi saya akan menunggu sampai secara resmi didukung dan digabungkan ke dalam VTK.

Sepertinya cabang python-py3k baru saja digabungkan: https://gitlab.kitware.com/vtk/vtk/merge_requests/478

Ada yang tau status tvtk? Jika saya akhirnya bisa bertransisi ke py3k tahun ini, itu akan sangat bagus!

$ python
Python 3.4.3 (default, Mar 25 2015, 17:13:50) 
[GCC 4.9.2 20150304 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import vtk
>>>

Yaaa!

Apakah ada kemajuan dalam hal ini? Sepertinya dukungan Python 3 akan ada di rilis minor berikutnya vtk 6.3.1.

Lihat #250

permintaan tarik #250 digabungkan. Penutupan.

Hanya beberapa umpan balik positif cepat
Saya menggunakan WinPython-64bit-3.4.4.1 dengan Mayavi 4.4.4 dan berfungsi dengan baik. Terima kasih untuk semua dev!

1.) VTK-7.0.0-cp34-cp34m-win_amd64.whl (http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk)
2.) pip install mayavi

@IVIUPPET ,
apakah solusi yang disebutkan di sini
https://github.com/enthought/mayavi/pull/250#issuecomment -207719214
memperbaiki masalah?

@solarjoe

Belum mencobanya, tetapi saya kembali ke sini untuk memposting hasil kerja saya untuk diikuti orang lain, berasal dari latar belakang Python yang sangat terbatas, tetapi pengalaman dengan Matlab dan C#.

Saya mendapatkan kesalahan platform yang tidak didukung yang saya komentari kemudian segera dihapus, karena saya mencoba menggunakan tautan Anda (untuk Python 3.4) dengan Python 3.5
Tapi saya menghargai jawaban Anda. Komentar dengan pengaturan saya untuk diikuti.

Saya menginstal/menggunakan Anaconda untuk Python 3.5. Versi 3.19.1. Saya menggunakan pip 8.1.1. (bukan berarti salah satu dari ini terlalu penting). 64 bit bila memungkinkan.

Saya kemudian mengunduh:
1) VTK-7.0.0-cp35-cp35m-win_amd64.whl
Dari: http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk
python 3.5 versi 64 bit VTK, ketergantungan kritis untuk Mayavi (Terima kasih solarjoe!)

cd untuk mengunduhDir:
pip install VTK-7.0.0-cp35-cp35m-win_amd64.whl

Butuh sedikit waktu untuk menyelesaikan tidak adanya vcvarsall.bat, yang merupakan masalah berikutnya yang saya temui setelah saya menemukan utas ini untuk membuat VTK bekerja dengan python 3.5. Mencoba menambahkan hal-hal ke variabel lingkungan yang berbeda, menginstal versi lama Visual Studio. Tidak berhasil. Akhirnya baru saja mendapatkan Visual Studio Community 2015, yang berisi kompiler C++ untuk Python 3.5. Saya tahu, ini berlebihan, tetapi saya menghabiskan berjam-jam melakukan hal-hal lain, jadi bagi saya ini adalah jalan yang paling tidak tahan (saya seorang EE). Selama instalasi, pastikan untuk melakukan "kustom" dan kemudian di bawah "bahasa pemrograman", periksa apa pun yang ada hubungannya dengan Python atau C++.

2) pip install mayavi

Itu berhasil. Setelah seharian googling, akhirnya saya memiliki grafik 3D yang tampaknya cocok atau melebihi Matlab! transisi Matlab ke Python saya selesai :D

Ketika saya membaca komentar @IVIUPPET di atas, saya ingat posting blog yang sangat baru (11 April) dari Microsoft bernama Bagaimana mengatasi rasa sakit "tidak dapat menemukan vcvarsall.bat" . Meskipun saya tidak yakin, saya pikir posting itu mungkin membantu.

Setelah menginstal Mayavi di Anaconda python 3.5 mengikuti instruksi bermanfaat dari IVIUPPET, saya mengalami hambatan dalam menjalankannya.

Ketika saya mengimpor mayavi saya mendapatkan kesalahan runtime berikut:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Apakah mayavi tidak berjalan di bawah pyqt5 (yang merupakan default anaconda)? Jika demikian, haruskah saya menginstal pyqt4 dan bagaimana cara menominasikan pyqt4 sebagai Qt API?

@dreme Sayangnya saya belum menerapkan GUI apa pun atau membutuhkan API QT di program saya, tetapi berdasarkan membaca sekilas dokumentasi, tampaknya masih ada beberapa pekerjaan yang harus dilakukan untuk transisi ke QT5. Saya tidak akan terkejut jika ada beberapa ketidakcocokan dengan mayavi, tetapi kesalahan Anda tampaknya tidak menunjukkan hal itu kepada saya. Coba tanpa mayavi untuk mengisolasi masalah atau menghubungi bantuan yang terkait dengan QT, saya ingin memiliki GUI pada akhirnya ketika saya meninggalkan kode saya untuk lab saya setelah saya pergi. Jika Anda menemukan ketidakcocokan dengan mayavi dan solusi yang lebih baik, harap beri tahu kami!

Terima kasih atas tanggapannya IVIUPPET.

Saya kira saya akan mencoba menginstal Qt4 terlebih dahulu. Mudah-mudahan itu tidak memperkenalkan bentrokan perangkat lunak yang buruk dengan Qt5 Anaconda

Juga, ketika mengkompilasi VTK Anda dapat memilih apakah Anda ingin widget Qt4 atau Qt5 pada waktu kompilasi, saya pikir.

Yah, saya mencoba mengkompilasi VTK dari sumber (http://www.vtk.org/download/) menggunakan instruksi di http://www.vtk.org/Wiki/VTK/Building/Windows

Namun, saya tidak dapat melihat opsi apa pun untuk menentukan widget Qt5, dan proses kompilasi (menggunakan Microsoft Visual Studio Community 2015) tetap gagal.

115>  Generating Code...
115>LINK : fatal error LNK1104: cannot open file '..\..\lib\Debug\vtkViewsCore-7.1.lib'
117>------ Build started: Project: ALL_BUILD, Configuration: Debug Win32 ------
117>  Building Custom Rule C:/MyProjects/VTK-src/CMakeLists.txt
117>  CMake does not need to re-run because C:\MyProjects\CMakeFiles\generate.stamp is up-to-date.
========== Build: 18 succeeded, 99 failed, 0 up-to-date, 0 skipped ==========

Anda ingin mengaktifkan VTK_Group_Qt, dan kemudian mengatur VTK_QT_VERSION ke 5 (default ke 4). Saya telah mengembangkan dan mengemas Tomviz, yang menggunakan Qt 5 dengan VTK/ParaView untuk beberapa waktu sekarang. Ini bekerja dengan cukup baik, ada beberapa bug yang perlu kami perbaiki. Kami juga membangun dengan Visual Studio 2015 di Windows dan sudah beberapa bulan sekarang.

Terima kasih @cryos!

Saya bukan programmer C++ dan hampir tidak memiliki pengalaman dalam mengkompilasi program, jadi jika Anda tidak keberatan, saya punya pertanyaan lanjutan.

Ketika Anda mengatakan "nyalakan VTK_Group_Qt, lalu setel VTK_QT_VERSION ke 5" apa sebenarnya yang Anda maksud? Saya melihat bahwa istilah VTK_Group_Qt dan VTK_QT_VERSION muncul di cukup banyak file CMakeLists.txt, serta di file vtkiOS.cmake, vtkAndroid.cmake, VTKConfig.cmake.in dan vtkQt.cmake.

Cara termudah adalah dengan menggunakan cmake-gui, dan arahkan ke direktori build. Anda ingin mengklik VTK_Group_Qt untuk memberi tanda centang pada kotak, klik Konfigurasi, dan kemudian VTK_QT_VERSION akan muncul sebagai variabel baru. Atau baris perintah CMake seperti berikut ini dapat digunakan:

cmake -DVTK_Group_Qt:BOOL=ON -DVTK_QT_VERSION:STRING=5 C:/path/to/vtk/src

Ini semua disimpan di CMakeCache.txt di direktori build, tetapi cmake-gui, cmake command line dll dapat digunakan untuk memanipulasinya. Anda juga perlu mengaktifkan pembungkus Python dengan cara yang sama. Harapan yang membuatnya lebih jelas.

@dreme Apakah Anda yakin ingin mengkompilasi VTK untuk menggunakan Qt5? Mayavi/ETS hanya mendukung Qt4 (atau WX): https://github.com/enthought/mayavi/issues/450 . Maaf jika saya kehilangan sesuatu ...

Terima kasih atas kesabaran Anda @cryos. Saya tidak menyadari bahwa program cmake-gui juga disediakan ketika cmake diinstal.

OK, jadi saya telah memulai cmake-gui, dan menunjukkan folder sumber (C:/MyProjects/VTK-src) dan membangun (C:/MyProjects/VTK-bin).

Namun, ketika saya mengklik tombol Configure saya mendapatkan banyak pesan kesalahan (lihat terlampir).

Saya juga tidak melihat istilah VTK_Group_Qt di antara variabel yang terdaftar (lihat gambar terlampir).

cmakegui

Apakah saya perlu menambahkannya dengan tombol Add Entry ?

Sepertinya tidak dapat menemukan kompiler C atau C++. Mereka tidak ada di sana karena gagal sangat awal, Anda mengatakan Anda menggunakan Visual Studio 2015, tetapi generator di tangkapan layar mengatakan Visual Studio 2017 (yang benar-benar baru, dan saya akan menghindarinya untuk saat ini). Anda mungkin perlu menghapus pohon build, dan mulai lagi tetapi pilih Visual Studio 2015.

Hai @jonathanrocher , tujuan utama saya adalah menjalankan mayavi di bawah anaconda python 3.5, seperti yang tampaknya dapat dilakukan oleh @IVIUPPET .

Mengikuti instruksinya, saya berhasil menginstal mayavi OK, tetapi ketika saya mencoba mengimpornya saya mendapatkan kesalahan runtime berikut:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Jadi, saya pikir mungkin solusinya adalah mengkompilasi VTK sehingga secara otomatis menggunakan Qt5 yang merupakan versi Qt default yang dikirimkan bersama Anaconda.

Tetapi seperti yang Anda lihat dari komentar sebelumnya, saya gagal dalam tugas ini ...

Apakah mungkin ada cara agar mayavi menggunakan WX?

@dreme - Saya menguji instruksi berikut dengan conda untuk paket pysph (lihat di sini ):

$ conda install -c conda-forge matplotlib jupyter pyside
$ conda install -c menpo mayavi

Jika Anda memiliki masalah, beri tahu kami.

Hai @prabhuramachandran , terima kasih atas saran itu, tetapi sepertinya tidak berhasil untuk saya.

Ketika saya masuk: conda install -c conda-forge matplotlib jupyter pyside

Saya mendapat pesan kesalahan berikut:

Fetching package metadata ...........
Solving package specifications: ....

UnsatisfiableError: The following specifications were found to be in conflict:
  - matplotlib
  - python 3.5*
Use "conda info <package>" to see the dependencies for each package.

Sepertinya tidak menyukai python 3.5 jadi saya membuat env baru untuk python 3.4, yang kedua perintah instal conda benar-benar berfungsi, yaitu:

$ conda install -c conda-forge matplotlib jupyter pyside
$ conda install -c menpo mayavi

Namun, ketika saya mencoba mengimpor mayavi di jupyter notebok, saya masih mendapatkan kesalahan runtime lama yang sama:
RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

Hai @dreme , saya membuat mayavi build di saluran menpo .

Kami telah mencapai masalah yang sama ini. Solusi bagi kami adalah memaksa downgrade di pyqt setelah instalasi, jadi

> conda install -c menpo mayavi
> conda install pyqt=4.11.4

Saya menemukan downgrade terakhir dimainkan dengan baik dengan yang lainnya, setidaknya diambil dari saluran anaconda standar dan saluran kami sendiri.

Sebenarnya, @scienceopen memiliki solusi yang lebih elegan jika Anda senang membuat env baru di sini https://github.com/enthought/mayavi/issues/448#issuecomment -258065329 (ternyata Anda dapat meminta env QT4 dari get- Pergilah)

Ya menggunakan QT4 env adalah cara yang harus dilakukan. Kemudian Anda dapat menggunakan QT5 untuk pekerjaan HiDPI non-Mayavi.

Bersyukur atas dukungan Python 3; semoga butuh waktu kurang dari tiga tahun untuk dukungan QT5

Juga, seperti yang saya sebutkan di atas (https://github.com/enthought/mayavi/issues/84#issuecomment-205720564) jika Anda menggunakan Windows dan tidak terikat dengan Anaconda, sangat mudah untuk membuat Mayavi bekerja dengan WinPython.

Hai semua, thx atas bantuan Anda yang berkelanjutan dengan masalah ini. Sangat menghargai itu.

Saya mencoba kedua solusi yang ditawarkan oleh @jabooth (menurunkan versi pyqt, dan membuat env baru dengan pengaturan python=3 pyqt=4), tetapi tidak ada yang berhasil. Saya masih mendapatkan kesalahan runtime yang sama ketika saya mencoba mengimpor mayavi:

C:\Users\dreme\Anaconda3\envs\py34\lib\site-packages\traitsui\qt4\__init__.py in <module>()
     16 # import pyface.qt before anything else is done so the sipapi
     17 # can be set correctly if needed
---> 18 import pyface.qt
     19 
     20 #----------------------------------------------------------------------------

C:\Users\dreme\Anaconda3\envs\py34\lib\site-packages\pyface\qt\__init__.py in <module>()
     42 elif qt_api != 'pyside':
     43     raise RuntimeError("Invalid Qt API %r, valid values are: 'pyqt' or 'pyside'"
---> 44                        % qt_api)

RuntimeError: Invalid Qt API 'pyqt5', valid values are: 'pyqt' or 'pyside'

[Saya tidak tahu apakah ini signifikan, tetapi saya menjalankan kode saya di notebook Jupyter]

Saya sangat menyukai distribusi python Anaconda, tetapi saya sampai pada titik di mana saya siap dengan putus asa untuk beralih ke WinPython (bukan berarti saya pikir itu buruk) seperti yang disarankan @solarjoe .

Dalam hal ini @solarjoe , penginstal mana yang Anda gunakan? WinPython 3.5.2.3Qt5 atau WinPython 3.5.2.3 ?

@dreme saya berasumsi setelah Anda melakukannya

conda create -n oldqt python=3 pyqt=4

bahwa Anda mengaktifkan lingkungan itu dengan (untuk Windows)

activate oldqt

atau untuk Mac/Linux

source activate oldqt

Sudahkah Anda mengatur variabel lingkungan QT_API ke sesuatu? Lihat https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py untuk logika yang digunakan.

@dreme saya berasumsi setelah Anda melakukannya

conda create -n oldqt python=3 pyqt=4
bahwa Anda mengaktifkan lingkungan itu dengan (untuk Windows)

aktifkan oldqt

Ya, itulah yang saya lakukan @scienceopen

Sudahkah Anda mengatur variabel lingkungan QT_API ke sesuatu? Lihat https://github.com/enthought/pyface/blob/master/pyface/qt/__init__.py untuk logika yang digunakan.

Tidak, ini semua dilakukan pada instalasi anaconda 3.5 yang cukup baru

Tapi saya pikir Anda mungkin benar tentang itu ada hubungannya dengan variabel QT_API . Apakah notebook Jupyter memiliki pengaturan default untuk ini? Bisakah saya mengatur ini ke sesuatu yang baik-baik saja untuk mayavi?

Anda selalu dapat mencoba mengubah variabel env. Saya ragu bahwa Jupyter mengubahnya tetapi mungkin sesuatu yang lain. Anda dapat memeriksa nilai saat ini dengan:

echo %QT_API%

dan ubah dengan

set QT_API= pyqt

di windows http://superuser.com/questions/79612/setting-and-getting-windows-environment-variables-from-the-command-Prompt

@dreme , saya menggunakan versi yang lebih lama, WinPython-64bit-3.4.4.1 dengan Qt4 dan Mayavi 4.4.4

1.) VTK-7.0.0-cp34-cp34m-win_amd64.whl (http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk)
2.) pip install mayavi

Anda juga dapat mencoba menginstal mayavi dari http://www.lfd.uci.edu/~gohlke/pythonlibs/ , cari halaman untuk Mayavi. Pilih saja versi yang benar.
Saya tidak yakin apakah mereka bekerja dengan versi Qt5 dari WinPython. Mungkin Anda harus menginstal http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyqt4 .

Anda selalu dapat mencoba mengubah variabel env. Saya ragu bahwa Jupyter mengubahnya tetapi mungkin sesuatu yang lain. Anda dapat memeriksa nilai saat ini dengan:

gema %QT_API%
dan ubah dengan

setel QT_API= pyqt

Yah, ini hanya membuatku gila. Saya mengatur variabel lingkungan windows untuk QT_API ke pyqt seperti yang disarankan @jenshnielsen , dan memeriksa ulang apakah sudah disetel dengan menjalankan perintah SET .

Tapi fmd, saya masih mendapatkan kesalahan runtime lama yang sama yang mengeluh bahwa Qt API adalah pyqt5 . Saya memeriksa lagi di terminal cmd, dan tentu saja variabel lingkungan QT_API adalah pyqt.

Kemudian ketika saya mematikan Anaconda Navigator dan memeriksa lagi, variabel QT_API baru saja menghilang sama sekali!

TETAPI, ketika saya me-restart Anaconda navigator dan membuka notebook Jupyter di bawah kernel "oldqt", saya mendapatkan kesalahan runtime lama yang sama dengan mengeluh tentang pyqt5

Ketika Anda mengaturnya, itu hanya berlaku di shell cmd saat ini. Tidak berpengaruh pada program di luar shell atau di shell lain. Anda dapat google cara mengatur variabel env secara permanen dari windows. Untuk menguji saya sarankan set QT_API. Di shell yang sama buka python dan jalankan contoh mlab sederhana yaitu Dari sini http://docs.enthought.com/mayavi/mayavi/mlab.html#a -demo

Anda juga harus dapat mengatur variabel env dari python sebelum mengimpor mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

@dreme : kami memiliki pengguna dengan masalah serupa, lihat apakah resolusi mereka membantu: https://github.com/menpo/menpo3d/issues/16

Instruksi yang dihasilkan dalam README kami mungkin lebih mudah diikuti:
https://github.com/menpo/menpo3d#visualizing -3d-objects

Bagian kunci:

Jika Anda menjalankan Windows dan menerima kesalahan ini, coba:

```
setel QT_API=pyqt
setel ETS_TOOLKIT=qt4
````

@jenshnielsen Saya mencoba mengotomatiskan ini sehingga pengguna (setidaknya Menpo) tidak perlu khawatir tentang itu, tetapi saya tidak dapat membuatnya berfungsi: https://github.com/menpo/menpo3d/issues/22

Saya akan mengangkat masalah terpisah untuk mencoba dan mendiskusikan perbaikan situasi di sini.

Anda juga harus dapat mengatur variabel env dari python sebelum mengimpor mayavi. http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python

Bingo! Itu berhasil. Thx @jenshnielsen =:-)

Saya lebih suka pendekatan dalam skrip ini dibandingkan dengan melakukan pengaturan OS seluruh sistem dari variabel lingkungan QT_API , karena saya mungkin masih ingin melakukan pengembangan pyqt5 di lingkungan root Anaconda saya.

Jadi, ringkasan untuk setiap orang miskin seperti saya yang berjuang untuk menjalankan mayavi di anaconda python 3.5, berikut adalah pendekatan yang saya sarankan yang disaring dari saran bermanfaat di komentar sebelumnya:

  1. Buat env baru (oldqt) yang diturunkan ke pyqt4 dengan menjalankan perintah berikut di terminal env root anaconda:
    conda create -n oldqt python=3 pyqt=4

  2. Beralih ke env yang baru dibuat:
    activate oldqt untuk OS Windows
    source activate oldqt untuk Mac/linux OS

  3. instal mayavi menggunakan penginstal paket menpo:
    conda install -c menpo mayavi

  4. Gunakan oldqt env untuk menjalankan skrip python mayavi Anda, dan sertakan cuplikan di bawah ini di bagian atas skrip ini untuk memastikan bahwa API QT yang valid untuk mayavi ditentukan:

import os
os.environ["QT_API"] = "pyqt"

VTK-7.0.0-cp34-cp34m-win_amd64.whl tidak tersedia di http://www.lfd.uci.edu/~gohlke/pythonlibs/#vtk , dari mana saya bisa mendapatkan VTK-7.0.0-cp34- cp34m-win_amd64.whl.

Itu tersedia seminggu yang lalu, saya mengunduhnya. Itu masih di komputer kantor saya, saya bisa mengirimi Anda tautan
Senin (juga untuk versi Mayavi yang cocok).

Mengapa Anda tidak menggunakan Mayavi dan VTK yang lebih baru?

Silakan kirim tautan untuk VTK-7.0.0-cp34-cp34m-win_amd64.whl. Terima kasih.

Tautan di bawah harus valid sekitar 30 hari.

VTK-7.0.0-cp34-cp34m-win_amd64.whl

http://ge.tt/8QvtGkl2

jadi... kira-kira di mana ini? Saya telah mengawasi ini sejak awal dan ini adalah salah satu dari proyek-proyek yang sepertinya tidak terjadi.

@nevion Bagaimana maksudmu? Ini adalah masalah tertutup, dan saya memiliki mayavi yang mengerjakan Python 3.6 di Windows dan juga Linux.

@mabl Tidak begitu jelas dari jejak masalah bahwa inilah masalahnya, dan hal-hal sering dibiarkan dalam keadaan tidak jelas dalam perangkat lunak ilmiah dengan sesuatu seperti qt support laggin. Antara ini dan distribusi anaconda yang hanya mendukung 2,7, saya pikir ini masih terjadi. Adakah yang tahu mengapa anaconda masih hanya mendukung 2.7?

conda install mayavi
Fetching package metadata .........
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - mayavi -> apptools 4.2.0 -> python 2.7* -> openssl 1.0.1*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

Baru saja menginstal Anaconda3 dan mencoba menginstal mayavi. Telah mendapatkan:

(C:\ProgramData\Anaconda3) C:\Users\nort.ARP>conda install mayavi
Mengambil metadata paket ...........
Spesifikasi paket pemecahan: .

UnsatisfiableError: Spesifikasi berikut ditemukan bertentangan:

  • mayavi -> apptools 4.2.0 -> python 2.7*
  • piton 3.6*
    Gunakan "conda info" untuk melihat dependensi untuk setiap paket.

Apakah Anda melihat/mencoba instruksi 4 poin di atas dari @dreme ?

Khusus dari @dreme

  1. Buat env baru (oldqt) yang diturunkan ke pyqt4 dengan menjalankan perintah berikut di terminal env root anaconda:

        conda create -n oldqt python=3.5 pyqt=4
    
  2. Beralih ke env yang baru dibuat:

        activate oldqt #for Windows OS
        source activate #oldqt for Mac/linux OS
    
  3. instal mayavi menggunakan penginstal paket menpo:

        conda install -c menpo mayavi
    
  4. Gunakan oldqt env untuk menjalankan skrip python mayavi Anda, dan sertakan cuplikan di bawah ini di bagian atas skrip ini untuk memastikan bahwa API QT yang valid untuk mayavi ditentukan:

        import os
        os.environ["QT_API"] = "pyqt"
    

@jonathanrocher Tidak, cukup adil. Saya mungkin salah membaca pernyataan bahwa ini diselesaikan dan hanya berhasil. Ya, itu dipasang mengikuti resep.

Saya baru saja mencoba @dreme instruksi 4 poin dan gagal dengan python 3.6. Saya harus memaksa 3.5:
conda create -n oldqt python=3.5 pyqt=4 dan itu berhasil.

ya itu benar, Mayavi 4.5 membutuhkan Python 3.5 karena QT4

Jadi saya bisa mendapatkan mayavi bekerja pada Qt5 dan Python 3.6 + VTK7.1 menggunakan misalnya conda install python=3.6.1 vtk>=7 -c clinicalgraphics , dan menggunakan beberapa nomor komit terbaru dari pyface , traits , dan traitsui . Ini tampaknya berfungsi pada OSX, Windows, dan Linux menurut CI kami.

Namun, pada mesin OSX dengan dukungan HiDPI, hanya 1/4 area layar yang digunakan:

screen shot 2017-10-17 at 17 07 08

Apakah ini sesuatu yang bisa diperbaiki di tingkat Mayavi?

Sepertinya itu mungkin dimaksudkan untuk menjadi bagian dari VTK7.1:

https://public.kitware.com/pipermail/vtk-developers/2016-November/034456.html

Tetapi sebelum melihat lebih dalam, saya pikir saya akan bertanya jika orang lain punya ide.

Salah satu opsi (sedih tetapi akan mengisi jendela) adalah menunggu VTK8 keluar, lalu gunakan QVTKOpenGLWidget, yang dapat Anda gunakan untuk mematikan HiDPI:

https://www.vtk.org/doc/nightly/html/classQVTKOpenGLWidget.html#details

Atau mungkin HiDPI akan "berfungsi saja" saat menggunakan widget ini.

Saya sudah mencoba variabel lingkungan yang tercantum di sini tetapi mereka tidak memperbaikinya.

Hai @larsoner , apakah ada berita sekarang bahwa vtk 8.1 tersedia?

Menginstal vtk 8.1.0 conda install -c conda-forge vtk , python diturunkan ke 3.6.2 (dan matplotlib ke 2.1.0 antara lain).
Saya menginstal pyface 5.1.0, ciri 4.6.0, ciri-ciri 5.1.0, conda install -c conda-forge pyface traits traitsui
Saya memiliki qt 5.6.2.

Menginstal mayavi 4.5.0 dari conda-forge conda install -c conda-forge mayavi mengeluh tentang dependensi pyqt 4.* , python 3.6* dan vtk 7.1.* .

Adakah saran untuk membuatnya bekerja dengan paket saat ini atau, sebagai alternatif, bagaimana tepatnya Anda membuatnya bekerja dengan Python3.6, Qt5 dan VTK7.1? (Masih ada solusi oleh @dreme untuk Python3.5+Qt4) Terima kasih.

Kami telah menggunakan file lingkungan ini untuk CI selama sekitar 6 bulan di Linux, OSX, dan Windows dengan sukses yang baik (selain hal-hal HiDPI):

https://github.com/mne-tools/mne-python/blob/master/environment.yml

Ini memiliki banyak barang yang tidak Anda butuhkan. Komponen penting untuk Mayavi mendapatkan VTK7 dari clinicalgraphics karena mereka memiliki versi 3.6 , dan menyematkan beberapa commit pyface , traits , dan traitsui dari GitHub sebagai pengganti penggunaan rilis karena versi yang mendukung Qt5 belum dirilis.

Jika VTK8 tersedia di conda-forge, mungkin bisa ditukar dengan aman, tapi saya belum mencobanya. Saya akan mencobanya di beberapa titik dan melihat apakah itu memperbaiki hal-hal HiDPI. Jika Anda mengalahkan saya, beri tahu saya bagaimana kelanjutannya!

@larsoner , @mpanighel -- ini adalah masalah dengan VTK 7.x (ukuran jendela hanya seperempat) dan berfungsi dengan baik dengan VTK 8.x. Nantikan cara yang lebih mudah untuk menginstal VTK dalam beberapa hari.

Sekedar informasi, saya telah mendorong roda untuk VTK 8.1.0 di PyPI, lihat di sini: http://prabhuramachandran.blogspot.in/2018/01/vtk-810-wheels-for-all-platforms-on-pypi.html

Luar biasa @prabhuramachandran !

Itu bagus @prabhuramachandran ! Terima kasih!

Pada hari-hari ini saya mengikuti perbaikan terbaru Anda dan mencoba mereproduksi pengaturan Anda dan menguji mayavi di python3.6/pyqt5 di Linux, tetapi tidak berhasil (pasti untuk pengetahuan python saya yang sangat mendasar), kemungkinan besar saya hanya melewatkan beberapa paket yang jelas. Saya berpikir untuk memposting info lebih lanjut di https://github.com/enthought/mayavi/issues/595 agar lebih rapi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

kitchoi picture kitchoi  ·  10Komentar

GaelVaroquaux picture GaelVaroquaux  ·  13Komentar

thoth291 picture thoth291  ·  10Komentar

dnacombo picture dnacombo  ·  7Komentar

stefanoborini picture stefanoborini  ·  11Komentar