Ich erstelle ein QGIS-Plugin und kann keine Lösung für diesen Fehler finden.
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
Für alle, die fragen werden, habe ich eine Python-Ressourcendatei erstellt:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Ich kann immer noch keinen Weg finden, es zum Laufen zu bringen. Ich bekomme immer den gleichen Fehler.
Oben auf dem Skript habe ich:
import resources_napoved_rc.py
Ich verwende die UI-Datei direkt von qtbuilder. Irgendwelche Ideen, wie es weitergehen soll? Ich gehe davon aus, dass dies eine Art Pfadproblem oder ähnliches sein muss.
pyqgis
qgis-plugins
pyqt
Greg
quelle
quelle
No module named resources_napoved_rc
undpyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
oder ist es ein Tippfehler?file.qrc
UI-Datei übergeben. (sehr seltsam) Ich habe auch alle möglichen Kombinationen ausprobiert:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Antworten:
Dieses Problem wird dadurch verursacht, dass es
uic
nicht richtig funktioniert. Ich weiß nicht genau warum, aber ich kann die Symptome und eine Problemumgehung zeigen.Die anfängliche Plugin-
.ui
Datei enthält ein leeresresources
Element:Wenn Sie die Ressourcen für das Plugin in QtDesigner bearbeiten, ändert sich dies zu:
Dies ist die Ursache des Problems. Wenn Sie die .qrc-Datei in diesem Include- Tag
resourcesXXX.qrc
ändern, ändert sich der Fehler inNo module named resourcesXXX_rc
.Hinweis: Das Folgende basiert auf einem Plugin-Build, bei dem 'test' in alle Felder des QGIS-Plugin-Builders eingegeben wurde.
In der Datei test_dialog.py kompilieren die folgenden Zeilen die .ui- Datei:
Hier tritt der Fehler auf.
Bearbeiten Sie Ihre
.ui
Datei, um wieder zu wechseln,<resources/>
und das Problem ist behoben. Bis Sie Ihren Dialog in QtDesigner erneut bearbeiten. Sie müssen diese Änderung an der.ui
Datei nach jedem Bearbeiten Ihres Dialogfelds vornehmen .Die Lösung hierfür besteht darin, Ihr Plugin so zu ändern, dass es wie frühere Versionen des Plugins funktioniert. Dies beinhaltet das Ersetzen des uic- Aufrufs und der Klassenzeilen in der Datei _dialog.py . Ersetzen Sie diese Zeilen:
mit:
Sie müssen jetzt laufen
Wenn Sie Ihr Plugin zum ersten Mal erstellen und jedes Mal, wenn Sie Ihren Plugin-Dialog mit QtDesigner bearbeiten. Dies war die alte Plugin-Methode.
Sie haben die Wahl, ob Sie die
.ui
Datei oder den Laufpyuic4
jedes Mal bearbeiten möchten.quelle
Sie können vermeiden, dass Sie die .ui-Datei bearbeiten oder kompilieren müssen, indem Sie folgende Schritte ausführen:
resource_suffix ist standardmäßig '_rc', weshalb immer nach 'resources_rc' gesucht wird. (Sie können die Standardeinstellung jederzeit beibehalten, wenn Sie resources_rc wirklich verwenden möchten.)
Durch Anhängen des Pfads der .ui-Datei an sys.path kann Python die Datei resources.py finden. Sie würden denken, es könnte es herausfinden, da sich Ihr aktuelles Verzeichnis in sys.path befinden soll (und andere Importe aus Ihrem aktuellen Verzeichnis funktionieren), aber das funktioniert nicht. Ich habe nicht genug darüber nachgedacht, um genau herauszufinden, warum.
quelle
Ich habe es endlich behoben, nachdem ich es 3 Stunden lang versucht hatte. Wie jemand sagte, fügt QT Designer hinzu
<resources> <include location="resources.qrc"/> </resources>
zu Ihrer UI-Datei. Ich habe diese Zeilen einfach gelöscht und alles funktioniert einwandfrei (Ressourcen sind in der GUI sichtbar)
quelle
Ich denke, die kurze Antwort auf dieses Problem ist, dass die Leute das Projekt direkt in QGIS laden, anstatt es auszuführen:
Die Datei
resources.py
wird erst nach dem erstenmake deploy
Ausführen generiert .quelle
So habe ich das Problem behoben:
Run-> cmd
Gehen Sie zum Speicherort Ihres Plugin-Builders (z. B.: C: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder).
Geben Sie den folgenden Befehl ein:
(Ich habe -py2 verwendet, weil ich Python 2.7 verwende.)
Starten Sie Ihr QGIS neu.
ERLEDIGT.
quelle
Am Ende funktionierte es für mich, die ursprünglichen Ressourcen zu verwenden, die beim Erstellen des Pakets mit dem Plugin Builder entstanden waren, und es in allen anderen Dialogen meines Plugins zu verwenden. Ich weiß immer noch nicht, warum sich das Hauptsymbol meines Plugins beim erneuten Laden des Plugins ändert, aber ich erhalte trotzdem Grafiken in anderen Dialogen.
Ich wünschte, dies wäre aus vielen Gründen anders. Für das Erstellen eines einfachen Plugins funktioniert dieser Ansatz wahrscheinlich. Es ist ein Organisationsdingie.
Da ich so viele Probleme mit diesen Ressourcen hatte, habe ich resources.py und resources_rc.py erstellt. Deshalb bekomme ich wahrscheinlich Probleme beim Neuladen.
Ich habe keine Zeit, mich mit diesem Problem zu befassen, aber das QGIS-Entwicklerteam sollte etwas Aufmerksamkeit darauf richten, da es die Leute daran hindert, schöne Plugins zu erstellen: D.
Was ich letztendlich getan habe, ist einfach zu haben:
vor dem Aufruf der UI-Klasse.
Danke, dass du mir bei diesem Durcheinander geholfen hast.
PS: Sie müssen Ihre Ressourcen "kompilieren", bevor Sie sie zu Ihrer * .ui-Datei hinzufügen, und dieselben Ressourcen verwenden -> Ressourcen in all Ihren Plugin-Dialogen importieren. Ich hoffe das hilft jemandem.
quelle
Führen Sie den gleichen Befehl mit aus
Es wird klappen
quelle