16 votos

Plugin QGIS: Problemas al importar el archivo resources (resources_rc) - el plugin no se carga - ¿Problemas con PATH?

Estoy construyendo qgis plugin y no puedo encontrar la solución para este error.

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 todo el mundo que estará preguntando he construido python archivo de recursos:

pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc

Sigo sin encontrar la manera de hacerlo funcionar. Siempre me da el mismo error.

En la parte superior de la secuencia de comandos que tengo:

import resources_napoved_rc.py

Estoy usando el archivo ui directamente desde qtbuilder. ¿Alguna idea de cómo seguir adelante? Supongo que esto debe ser algún tipo de problema de ruta o algo similar.

1voto

inequal Puntos 433

Puede dar uic.loadUiType el paquete del que importar recursos, por ejemplo:

from pkg_resources import resource_filename
from qgis.PyQt import uic

FORM, BASE = uic.loadUiType(
    resource_filename('test', 'ui/ui_about.ui'),
    from_imports=True,
    import_from="test.ui",
)

Haré un pull request en QGIS Plugin builder cuando tenga algo de tiempo.

0voto

Greg Puntos 61

Lo que me funcionó al final fue usar los recursos originales que venían cuando creé el paquete con el plugin builder y usarlo en todos los demás diálogos de mi plugin. Todavía no sé por qué el icono principal de mi plugin cambia al recargar el plugin, pero todavía tengo gráficos en otros cuadros de diálogo.

Me gustaría que esto fuera diferente por muchas razones. Para la construcción de plugin simple este enfoque probablemente funciona. Es una cosa de organización.

Desde que tuve tantos problemas con estos recursos que he construido resources.py y resources_rc.py que es probablemente por eso que tengo problemas al recargar.

No tengo tiempo para ocuparme de este problema, pero el equipo de desarrollo de QGIS debería prestarle algo de atención, ya que impide a la gente crear bonitos plugins :D

Lo que terminé haciendo es tener simple:

import resources

antes de llamar a la clase UI.

Gracias por ayudarme con este lío.

PD: tienes que "compilar" tus recursos antes de añadirlos a tu archivo *.ui y usar los mismos recursos -> importar recursos en todos los diálogos de tu plugin. Espero que esto ayude a alguien.

0voto

nikie Puntos 7479

Cuando cree su plugin de QGIS con esto proceso está creando un compile.bat que contiene los siguientes archivos :

@echo off
call "C:\OSGeo4W64\bin\o4w_env.bat"
call "C:\OSGeo4W64\bin\qt5_env.bat"
call "C:\OSGeo4W64\bin\py3_env.bat"

@echo on
pyrcc5 -o resources.py resources.qrc

Puedo ejecutarlo.

EDITAR 1 :

Y no olvide comprobar que su resources.qrc tiene el derecho prefix en el atributo qresource etiqueta. En mi caso es algo así como :

<qresource prefix="/plugins/plugin_name">

EDITAR 2 :

Eliminar las filas con la etiqueta resources en el .ui archivo.

-1voto

Appu Puntos 3995

Ejecute el mismo comando utilizando

sudo pyrcc4 -o recursos_rc.py recursos.qrc

Funcionará

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X