Estou construindo o plugin qgis e não consigo encontrar a solução para este erro.
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
Para todos que perguntarem, eu criei o arquivo de recursos python:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Ainda não consigo encontrar uma maneira de fazê-lo funcionar. Eu sempre recebo o mesmo erro.
No topo do script, tenho:
import resources_napoved_rc.py
Estou usando o arquivo da interface do usuário diretamente do qtbuilder. Alguma idéia de como avançar? Estou assumindo que isso deve ser algum tipo de problema de caminho ou algo semelhante.
pyqgis
qgis-plugins
pyqt
Greg
fonte
fonte
No module named resources_napoved_rc
epyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
ou é um erro de digitação?file.qrc
no arquivo da interface do usuário. (muito estranho) Eu tentei todas as combinações possíveis também:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Respostas:
Esse problema é causado por
uic
não funcionar corretamente. Não sei exatamente por que, mas posso mostrar os sintomas e uma solução alternativa.O
.ui
arquivo de plug-in inicial possui umresources
elemento vazio :Quando você edita os recursos para o plug-in no QtDesigner, isso muda para:
Essa é a fonte do problema. Se você alterar o arquivo .qrc na tag de inclusão,
resourcesXXX.qrc
o erro será alterado paraNo module named resourcesXXX_rc
.Nota: o seguinte é baseado em uma construção de plug-in com 'test' inserido em todos os campos do construtor de QGIS.
No arquivo test_dialog.py, as seguintes linhas compilam o arquivo .ui :
É aqui que o erro está ocorrendo.
Edite seu
.ui
arquivo para voltar<resources/>
e o problema foi resolvido. Até você editar sua caixa de diálogo no QtDesigner novamente. Você deve fazer essa edição no.ui
arquivo após cada vez que editar sua caixa de diálogo.A solução para isso é alterar seu plugin para funcionar como as versões anteriores do plugin funcionaram. Isso envolve a substituição da chamada uic e das linhas da classe no arquivo _dialog.py . Substitua estas linhas:
com:
Agora você terá que executar
quando você cria seu plugin pela primeira vez e sempre que editar sua caixa de diálogo com o QtDesigner. Este era o antigo método de plug-in.
Se você deseja editar o
.ui
arquivo ou executarpyuic4
sempre.fonte
Você pode evitar ter que editar o arquivo .ui ou compilar, etc, fazendo o seguinte:
O resource_suffix é padronizado como '_rc' e é por isso que ele está sempre procurando por 'resources_rc.' (você sempre pode deixá-lo no padrão se realmente quiser usar o resources_rc, é claro)
E anexar o caminho do arquivo .ui ao sys.path permite que o python encontre recursos.py. Você pensaria que seria capaz de descobrir isso, já que seu diretório atual deveria estar no sys.path (e outras importações do seu diretório atual funcionam), mas não é. Eu não examinei o suficiente para descobrir exatamente o porquê.
fonte
Eu finalmente consertei depois de 3 horas de tentativas. Como alguém disse, o QT Designer adiciona
<resources> <include location="resources.qrc"/> </resources>
para o seu arquivo de interface do usuário. Eu simplesmente apaguei essas linhas e tudo funciona bem (os recursos são visíveis na GUI)
fonte
Eu acho que a resposta curta para esse problema é que as pessoas estão carregando o projeto diretamente no QGIS em vez de executar:
O arquivo
resources.py
é gerado apenas após a primeira vez quemake deploy
é executado.fonte
Foi assim que resolvi o problema:
Executar-> cmd
Vá para o local do seu construtor de plugins (ou seja: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)
digite o seguinte comando:
(Eu usei -py2 porque estou usando python 2.7)
reinicie o seu QGIS.
FEITO.
fonte
O que funcionou para mim no final foi usar os recursos originais que surgiram quando eu criei o pacote com o construtor de plugins e usá-lo em todas as outras caixas de diálogo do meu plugin. Ainda não sei por que o ícone principal do meu plug-in muda ao recarregar o plug-in, mas ainda recebo gráficos em outras caixas de diálogo.
Eu gostaria que isso fosse diferente por vários motivos. Para criar plugins simples, essa abordagem provavelmente funciona. É uma coisa de organização.
Como eu tive tantos problemas com esses recursos, criei resources.py e resources_rc.py e provavelmente é por isso que tenho problemas ao recarregar.
Não tenho tempo para lidar com esse problema, mas a equipe de desenvolvimento do QGIS deve prestar atenção, pois impede as pessoas de criar plugins bonitos: D
O que acabei fazendo é simples:
antes de chamar a classe da interface do usuário.
Obrigado por me ajudar com essa bagunça.
PS: você precisa "compilar" seus recursos antes de adicioná-los ao seu arquivo * .ui e usar os mesmos recursos -> importar recursos em todas as caixas de diálogo de seu plug-in. Espero que isso ajude alguém.
fonte
Execute o mesmo comando usando
Vai funcionar
fonte