Suite

Les plugins se bloquent avec "Aucun module nommé qgsprojectionselectionwidget" dans Windows ?


Mon plugin Python QGIS fonctionne sur Ubuntu (au moins pour moi, et tous les bogues fatals signalés jusqu'à présent sont résolus), mais lorsque je l'exécute sur QGIS installé à partir du programme d'installation officiel 2.10.1 64 bits pour Windows (sur Windows 7 64- bit), je ne peux pas l'installer en raison de l'erreur suivante :

Ce plugin est cassé Pas de module nommé qgsprojectionselectionwidget

Un autre utilisateur a également signalé ce problème. mais avec un autre message d'erreur (je ne sais pas quel système d'exploitation et quelle architecture il a, mais je suppose que Windows et 64 bits EDIT : j'ai mal deviné, il a Mac OS X) :

Ce plugin est cassé Pas de module nommé qgsmaplayercombobox

Les deux font référence à des widgets sous forme d'interface graphique, que j'ai construit via Qt Designer dans Ubuntu. Qt Designer est également fourni avec l'installateur QGIS pour Windows et prétend contenir les mêmes widgets personnalisés QGIS, donc le problème ne devrait pas être dans ces widgets manquants, et QGIS devrait les reconnaître - mais ce n'est pas le cas.

Alors comment y remédier ? Mon plugin est encore expérimental, je peux donc simplement ajouter "désolé, ne fonctionne pas sous Windows" aux métadonnées, mais ce n'est pas une vraie solution.

EDIT : même comportement confirmé sur la version 32 bits également.

Maintenant, j'ai trouvé un bon indice dans le commentaire de cette réponse: utilisezos.path.joinpour rendre les chemins multiplateformes. C'est facile pour les quelques chemins codés en dur que j'ai, mais les erreurs semblent suggérer que le problème est plus profond, peut-être même dans Qt. Comment puis-je gérer ce problème dans mon plugin sans rien modifier d'autre ?


Votre QGIS essaie probablement d'importer votre widget à partir du fichier .h comme en c++.

Veuillez ouvrir votre fichier .ui et rechercher les lignes :

 QgsProjectionSelectionWidget QWidget 
qgsprojectionselectionwidget.h

Ensuite, dans votre balise d'en-tête, remplacez-la par :

 QgsProjectionSelectionWidget QWidget 
qgis.gui

Changez la même balise pour tous vos widgets avec erreur (qgsmaplayercombobox etc.).


La réponse de @ dmh126 est bonne. Surtout, si vous travaillez avec pyqt - pyqgis, vous devriez écrireà partir de l'importation qgis._gui *à la place deimporter QgsProjectionSelectionWidget.


Voir la vidéo: QGIS Python PyQGIS - Calculate Field Values Field Calculator (Octobre 2021).