Plugins com o "Nenhum módulo chamado qgsprojectionselectionwidget" no Windows?

8

Meu plug-in Python QGIS funciona no Ubuntu (pelo menos para mim, e todos os bugs fatais relatados até agora estão resolvidos), mas quando eu o executo no QGIS instalado a partir do instalador oficial 2.10.1 de 64 bits para Windows (no Windows 7 64- bit), não consigo instalá-lo devido ao seguinte erro:

This plugin is broken
No module named qgsprojectionselectionwidget

Outro usuário também relatou esse problema. mas com outra mensagem de erro (não sei qual sistema operacional e arquitetura ele possui, mas acho que o Windows e a edição de 64 bits: Supus errado, ele tem o Mac OS X):

This plugin is broken
No module named qgsmaplayercombobox

Ambos se referem a widgets no formulário da GUI, que eu criei através do Qt Designer no Ubuntu. O Qt Designer também possui o instalador do QGIS para Windows e alega conter os mesmos widgets personalizados do QGIS; portanto, o problema não deve estar nos widgets ausentes e o QGIS deve reconhecê-los - mas não.

Então, como consertar isso? Meu plug-in ainda é experimental, então posso adicionar "desculpe, não funciona no Windows" aos metadados, mas não é uma solução real.

EDIT: o mesmo comportamento confirmado na versão de 32 bits também.

Agora, encontrei uma boa dica no comentário a esta resposta : use os.path.joinpara tornar os caminhos multiplataforma. Isso é fácil para os poucos caminhos codificados que eu tenho, mas os erros parecem sugerir que o problema é mais profundo, talvez até no Qt. Como posso lidar com esse problema no meu plugin sem alterar mais nada?

Pavel V.
fonte

Respostas:

22

Provavelmente, o seu QGIS está tentando importar seu widget do arquivo .h, como em c ++.

Abra o seu arquivo .ui e encontre as linhas:

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

Em seguida, na tag do cabeçalho, mude para:

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

Altere a mesma tag para todos os seus widgets com erro (qgsmaplayercombobox etc.).

dmh126
fonte
0

A resposta de @ dmh126 é boa. Especialmente, se você trabalha com pyqt - pyqgis, deve escrever em from qgis._gui import *vez de import QgsProjectionSelectionWidget.

Mustafa Uçar
fonte