Je construis le plugin qgis et je ne trouve pas de solution à cette erreur.
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
Pour tous ceux qui demanderont que j'ai construit un fichier de ressources python:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Je ne trouve toujours pas de moyen de le faire fonctionner. J'ai toujours la même erreur.
En plus du script, j'ai:
import resources_napoved_rc.py
J'utilise le fichier ui directement depuis qtbuilder. Des idées pour aller de l'avant? Je suppose que cela doit être une sorte de problème de chemin ou quelque chose de similaire.
pyqgis
qgis-plugins
pyqt
Greg
la source
la source
No module named resources_napoved_rc
etpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
ou est-ce une erreur de frappe?file.qrc
dans le fichier interface utilisateur. (très étrange) J'ai aussi essayé toutes les combinaisons possibles:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Réponses:
Ce problème est dû au fait qu'il
uic
ne fonctionne pas correctement. Je ne sais pas exactement pourquoi, mais je peux montrer les symptômes et une solution de contournement.Le
.ui
fichier de plugin initial a unresources
élément vide :Lorsque vous modifiez les ressources du plugin dans QtDesigner, cela se transforme en:
C'est la source du problème. Si vous modifiez le fichier .qrc dans cette balise include,
resourcesXXX.qrc
l'erreur se transforme enNo module named resourcesXXX_rc
.Remarque: ce qui suit est basé sur une construction de plugin avec 'test' entré dans tous les champs du générateur de plugins QGIS.
Dans le fichier test_dialog.py , les lignes suivantes compilent le fichier .ui :
C'est là que l'erreur se produit.
Modifiez votre
.ui
fichier pour y revenir<resources/>
et le problème est résolu. Jusqu'à ce que vous modifiiez à nouveau votre boîte de dialogue dans QtDesigner. Vous devez effectuer cette modification dans le.ui
fichier après chaque modification de votre boîte de dialogue.La solution à cela est de changer votre plugin pour qu'il fonctionne comme les versions précédentes du plugin fonctionnaient. Cela implique de remplacer l' appel uic et les lignes de classe dans le fichier _dialog.py . Remplacez ces lignes:
avec:
Vous devrez maintenant exécuter
lorsque vous créez votre plugin pour la première fois et à chaque fois que vous modifiez votre boîte de dialogue de plugin avec QtDesigner. C'était l'ancienne méthode du plugin.
Que ce soit pour éditer le
.ui
fichier ou le lancer àpyuic4
chaque fois, c'est votre choix.la source
Vous pouvez éviter d'avoir à modifier le fichier .ui ou la compilation, etc. en procédant comme suit:
par défaut, resource_suffix est «_rc», c'est pourquoi il recherche toujours «resources_rc». (vous pouvez toujours le laisser par défaut si vous voulez vraiment utiliser resources_rc, bien sûr)
Et l'ajout du chemin du fichier .ui à sys.path permet à python de trouver resources.py. Vous penseriez qu'il serait en mesure de le comprendre puisque votre répertoire actuel est censé être dans sys.path (et que les autres importations de votre répertoire actuel fonctionnent), mais ce n'est pas le cas. Je n'y ai pas suffisamment réfléchi pour comprendre exactement pourquoi.
la source
Je l'ai finalement réparé après 3 heures d'essais. Comme quelqu'un l'a dit, QT Designer ajoute
<resources> <include location="resources.qrc"/> </resources>
à votre fichier d'interface utilisateur. J'ai simplement supprimé ces lignes et tout fonctionne bien (les ressources sont visibles dans l'interface graphique)
la source
Je pense que la réponse courte à ce problème est que les gens chargent le projet directement dans QGIS au lieu d'exécuter:
Le fichier
resources.py
est généré uniquement après la premièremake deploy
exécution.la source
Voici comment j'ai résolu le problème:
Exécuter-> cmd
Accédez à l'emplacement de votre générateur de plug-in (par exemple: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)
tapez la commande suivante:
(J'ai utilisé -py2 parce que j'utilise python 2.7)
redémarrez votre QGIS.
TERMINÉ.
la source
Ce qui a fonctionné pour moi à la fin était d'utiliser des ressources originales qui sont venues lorsque j'ai créé un package avec le plugin builder et de l'utiliser dans toutes les autres boîtes de dialogue de mon plugin. Je ne sais toujours pas pourquoi l'icône principale de mon plugin change lors du rechargement du plugin, mais j'obtiens toujours des graphiques dans d'autres boîtes de dialogue.
Je souhaite que ce soit différent pour de nombreuses raisons. Pour construire un plugin simple, cette approche fonctionne probablement. C'est un truc d'organisation.
Depuis que j'ai eu tellement de problèmes avec ces ressources, j'ai créé resources.py et resources_rc.py, c'est probablement pourquoi j'ai des problèmes lors du rechargement.
Je n'ai pas le temps de traiter ce problème mais l'équipe de développement QGIS devrait y prêter attention car il bloque les gens pour créer de beaux plugins: D
J'ai fini par faire simple:
avant d'appeler la classe UI.
Merci de m'avoir aidé avec ce gâchis.
PS: vous devez "compiler" vos ressources avant de les ajouter à votre fichier * .ui et utiliser les mêmes ressources -> importer des ressources dans toutes vos boîtes de dialogue de plugin. J'espère que ça aidera quelqu'un.
la source
Exécutez la même commande en utilisant
Ça va marcher
la source