Windowsで「qgsprojectionselectionwidgetという名前のモジュールがない」とプラグインがクラッシュしますか?


8

俺の Python QGISプラグインはUbuntuで動作しますが(少なくとも私にとっては、これまでに報告されたすべての致命的なバグは解決されています)、Windows用の公式の2.10.1 64ビットインストーラーからインストールされたQGISで実行すると(Windows 7 64の場合)ビット)、次のエラーが原因でインストールできません:

This plugin is broken
No module named qgsprojectionselectionwidget

別のユーザーもこの問題を報告しています。しかし、別のエラーメッセージが表示されます(彼が使用しているオペレーティングシステムとアーキテクチャはわかりませんが、Windowsと64ビット版だと思います。

This plugin is broken
No module named qgsmaplayercombobox

どちらも、私がUbuntuのQt Designerで作成したGUIフォームのウィジェットを指します。Qt DesignerにはWindows用のQGISインストーラーも同梱されており、同じQGISカスタムウィジェットが含まれていると主張しているため、これらのウィジェットが欠落していることで問題が発生することはなく、QGISがそれらを認識するはずですが、認識されません。

それを修正するにはどうすればよいですか?私のプラグインはまだ実験段階なので、「申し訳ありませんが、Windowsでは機能しません」をメタデータに追加することはできますが、実際のソリューションではありません。

編集:32ビット版でも確認された同じ動作。

今、私はこの回答へのコメントに良いヒントを見つけました:os.path.joinパスをクロスプラットフォームにするために使用します。これは私が持っているいくつかのハードコードされたパスにとっては簡単ですが、エラーはおそらくQtでさえ問題がより深いことを示唆しているようです。他に何も調整せずにプラグインでこの問題を処理するにはどうすればよいですか?

回答:


22

おそらくあなたのQGISはc ++のように.hファイルからあなたのウィジェットをインポートしようとしています。

.uiファイルを開いて、行を見つけてください。

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

次に、ヘッダータグを次のように変更します。

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

エラーのあるすべてのウィジェットの同じタグを変更します(qgsmaplayercomboboxなど)。


0

@ dmh126の答えはいいです。特に、pyqt-pyqgisを使用している場合は、のfrom qgis._gui import *代わりに記述してくださいimport QgsProjectionSelectionWidget

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.