Saya sedang membangun plugin qgis dan saya tidak dapat menemukan solusi untuk kesalahan ini.
File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 478, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named resources_napoved_rc
Untuk semua orang yang akan bertanya saya telah membangun file sumber python:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Saya masih tidak dapat menemukan cara untuk membuatnya bekerja. Saya selalu mendapatkan kesalahan yang sama.
Di atas skrip yang saya miliki:
import resources_napoved_rc.py
Saya menggunakan file ui langsung dari qtbuilder. Ada ide bagaimana cara maju? Saya berasumsi ini pasti semacam masalah jalur atau sesuatu yang serupa.
pyqgis
qgis-plugins
pyqt
Greg
sumber
sumber
No module named resources_napoved_rc
danpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
atau apakah itu kesalahan pengetikan?file.qrc
UI. (sangat aneh) Saya mencoba semua kemungkinan kombinasi juga:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Jawaban:
Masalah ini disebabkan karena
uic
tidak berfungsi dengan baik. Saya tidak yakin persis mengapa tetapi saya bisa menunjukkan gejala dan solusinya..ui
File plugin awal memilikiresources
elemen kosong :Ketika Anda mengedit sumber daya untuk plugin di QtDesigner ini berubah menjadi:
Ini adalah sumber masalahnya. Jika Anda mengubah file .qrc di yang menyertakan tag ke
resourcesXXX.qrc
kesalahan akan berubah menjadiNo module named resourcesXXX_rc
.Catatan: berikut ini didasarkan pada pembuatan plugin dengan 'test' dimasukkan ke semua bidang pembuat plugin QGIS.
Dalam test_dialog.py file baris berikut mengkompilasi Ui berkas:
Di sinilah kesalahan terjadi.
Edit
.ui
file Anda untuk diubah kembali<resources/>
dan masalahnya teratasi. Sampai Anda mengedit dialog Anda di QtDesigner lagi. Anda harus mengedit ini ke.ui
file setelah setiap kali Anda mengedit dialog Anda.Solusi untuk ini adalah mengubah plugin Anda agar berfungsi seperti versi sebelumnya dari plugin yang berfungsi. Ini termasuk mengganti panggilan uic dan baris kelas dalam file _dialog.py . Ganti baris ini:
dengan:
Anda sekarang harus berlari
ketika Anda pertama kali membuat plugin Anda dan setiap kali Anda mengedit dialog plugin Anda dengan QtDesigner. Ini adalah metode plugin yang lama.
Apakah akan mengedit
.ui
file atau menjalankanpyuic4
setiap kali adalah pilihan Anda.sumber
Anda dapat menghindari keharusan mengedit file .ui atau mengkompilasi, dll dengan melakukan hal berikut:
resource_suffix default ke '_rc' itulah sebabnya ia selalu mencari 'resources_rc.' (Anda selalu dapat membiarkannya di default jika Anda benar-benar ingin menggunakan resources_rc, tentu saja)
Dan menambahkan path file .ui ke sys.path memungkinkan python untuk menemukan resources.py. Anda akan berpikir itu akan bisa mengetahuinya karena direktori Anda saat ini seharusnya di sys.path (dan impor lainnya dari pekerjaan direktori Anda saat ini), tetapi tidak. Saya belum cukup memeriksanya untuk mencari tahu mengapa.
sumber
Saya akhirnya memperbaikinya setelah 3 jam mencoba. Seperti kata seseorang, QT Designer menambahkan
<resources> <include location="resources.qrc"/> </resources>
ke file UI Anda. Saya cukup menghapus baris-baris itu dan semuanya berfungsi dengan baik (sumber daya terlihat di GUI)
sumber
Saya pikir jawaban singkat untuk masalah ini adalah orang-orang memuat proyek secara langsung ke QGIS alih-alih berjalan:
File
resources.py
hanya dihasilkan setelah pertama kalimake deploy
dijalankan.sumber
Inilah cara saya memperbaiki masalah:
Run-> cmd
Buka lokasi pembuat plugin Anda (mis .: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)
ketik perintah berikut:
(Saya menggunakan -py2 karena saya menggunakan python 2.7)
restart QGIS Anda.
DIBUAT
sumber
Apa yang berhasil bagi saya pada akhirnya adalah menggunakan sumber daya asli yang datang ketika saya membuat paket dengan pembuat plugin dan menggunakannya dalam semua dialog lain dari plugin saya. Saya masih tidak tahu mengapa ikon utama plugin saya berubah ketika memuat ulang plugin, tetapi saya masih mendapatkan grafik di dialog lain.
Saya berharap ini akan berbeda karena berbagai alasan. Untuk membangun plugin sederhana pendekatan ini mungkin berhasil. Ini masalah organisasi.
Karena saya mempunyai begitu banyak masalah dengan sumber daya ini, saya telah membangun resources.py dan resources_rc.py itu sebabnya saya mendapatkan masalah saat memuat ulang.
Saya tidak punya waktu untuk mengatasi masalah ini, tetapi tim dev QGIS harus menaruh perhatian padanya karena hal itu menghalangi orang untuk membuat plugin yang indah: D
Apa yang akhirnya saya lakukan adalah memiliki sederhana:
sebelum memanggil kelas UI.
Terima kasih telah membantu saya dengan kekacauan ini.
PS: Anda harus "kompilasi" sumber daya Anda sebelum menambahkannya ke file * .ui Anda dan gunakan gunakan sumber daya yang sama -> impor sumber daya di semua dialog plugin Anda. Saya harap ini membantu seseorang.
sumber
Jalankan perintah yang sama menggunakan
Itu akan berhasil
sumber