Plugins, die unter Windows mit "Kein Modul namens qgsprojectionselectionwidget" abstürzen?


8

Mein Python QGIS-Plugin funktioniert unter Ubuntu (zumindest für mich, und alle schwerwiegenden Fehler, die bisher gemeldet wurden, sind behoben), aber wenn ich es auf QGIS ausführe, das vom offiziellen 64-Bit-Installationsprogramm 2.10.1 für Windows (unter Windows 7 64-) installiert wurde Bit), ich kann es aufgrund des folgenden Fehlers nicht installieren:

This plugin is broken
No module named qgsprojectionselectionwidget

Ein anderer Benutzer hat dieses Problem ebenfalls gemeldet. aber mit einer anderen Fehlermeldung (Ich weiß nicht, welches Betriebssystem und welche Architektur er hat, aber ich würde Windows und 64-Bit-EDIT erraten: Ich habe falsch geraten, er hat Mac OS X):

This plugin is broken
No module named qgsmaplayercombobox

Beide beziehen sich auf Widgets im GUI-Formular, das ich über Qt Designer in Ubuntu erstellt habe. Qt Designer ist auch mit dem QGIS-Installationsprogramm für Windows ausgestattet und behauptet, dieselben benutzerdefinierten QGIS-Widgets zu enthalten. Das Problem sollte also nicht darin bestehen, dass diese Widgets fehlen, und QGIS sollte sie erkennen - aber nicht.

Wie kann man das beheben? Mein Plugin ist noch experimentell, daher kann ich den Metadaten einfach "Entschuldigung, funktioniert nicht unter Windows" hinzufügen, aber es ist keine echte Lösung.

BEARBEITEN: Das gleiche Verhalten wurde auch in der 32-Bit-Version bestätigt.

Jetzt habe ich im Kommentar zu dieser Antwort einen guten Hinweis gefunden : Verwenden Sie diese Optionos.path.join , um die Pfade plattformübergreifend zu gestalten. Dies ist für die wenigen fest codierten Pfade, die ich habe, einfach, aber die Fehler scheinen darauf hinzudeuten, dass das Problem tiefer liegt, vielleicht sogar in Qt. Wie kann ich dieses Problem in meinem Plugin behandeln, ohne etwas anderes zu optimieren?

Antworten:


22

Wahrscheinlich versucht Ihr QGIS, Ihr Widget wie in c ++ aus einer .h-Datei zu importieren.

Bitte öffnen Sie Ihre .ui-Datei und suchen Sie nach Zeilen:

<customwidget>
   <class>QgsProjectionSelectionWidget</class>
   <extends>QWidget</extends>
   <header>qgsprojectionselectionwidget.h</header>
  </customwidget>

Wechseln Sie dann in Ihrem Header-Tag zu:

<customwidget>
   <class>QgsProjectionSelectionWidget</class>
   <extends>QWidget</extends>
   <header>qgis.gui</header>
  </customwidget>

Ändern Sie das gleiche Tag für alle Ihre Widgets mit Fehler (qgsmaplayercombobox usw.).


0

@ dmh126 Antwort ist gut. Insbesondere wenn Sie mit pyqt - pyqgis arbeiten, sollten Sie from qgis._gui import *stattdessen schreiben import QgsProjectionSelectionWidget.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.