Estoy construyendo el complemento qgis 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 todos los que preguntarán, he creado el archivo de recursos de Python:
pyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
Todavía no puedo encontrar una manera de hacerlo funcionar. Siempre recibo el mismo error.
Además del guión 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.
pyqgis
qgis-plugins
pyqt
Greg
fuente
fuente
No module named resources_napoved_rc
ypyrcc4 -o resources_napoved_rc.py resources_napoved.qrc
o es un error de tipeo?file.qrc
archivo UI. (Muy extraño) También probé todas las combinaciones posibles:pyrcc4 -o resources_napoved_rc.py resources_napoved_rc.qrc
import resources_napoved_rc
Respuestas:
Este problema se debe a que
uic
no funciona correctamente. No estoy seguro exactamente por qué, pero puedo mostrar los síntomas y una solución alternativa.El
.ui
archivo de complemento inicial tiene unresources
elemento vacío :Cuando edita los recursos para el complemento en QtDesigner, esto cambia a:
Esta es la fuente del problema. Si cambia el archivo .qrc en esa etiqueta de inclusión,
resourcesXXX.qrc
el error cambiará aNo module named resourcesXXX_rc
.Nota: lo siguiente se basa en una compilación de complementos con 'prueba' ingresada en todos los campos del generador de complementos QGIS.
En el archivo test_dialog.py , las siguientes líneas compilan el archivo .ui :
Aquí es donde está ocurriendo el error.
Edite su
.ui
archivo para volver a cambiar<resources/>
y el problema se resuelve. Hasta que edite su diálogo en QtDesigner nuevamente. Debe realizar esta edición en el.ui
archivo cada vez que edite su cuadro de diálogo.La solución a esto es cambiar su complemento para que funcione como funcionaban las versiones anteriores del complemento. Esto implica reemplazar la llamada uic y las líneas de clase en el archivo _dialog.py . Reemplace estas líneas:
con:
Ahora tendrás que correr
cuando cree su complemento por primera vez y cada vez que edite su diálogo de complemento con QtDesigner. Este era el antiguo método de complemento.
Si desea editar el
.ui
archivo o ejecutarpyuic4
cada vez es su elección.fuente
Puede evitar tener que editar el archivo .ui o compilar, etc. haciendo lo siguiente:
resource_suffix tiene como valor predeterminado '_rc', por lo que siempre está buscando 'resources_rc'. (siempre puede dejarlo por defecto si realmente quiere usar resources_rc, por supuesto)
Y agregar la ruta del archivo .ui a sys.path le permite a python encontrar resources.py. Pensarías que sería capaz de resolverlo ya que se supone que tu directorio actual está en sys.path (y otras importaciones de tu directorio actual funcionan), pero no lo hace. No lo he investigado lo suficiente como para entender exactamente por qué.
fuente
Finalmente lo arreglé después de 3 horas de intentarlo. Como alguien dijo, QT Designer agrega
<resources> <include location="resources.qrc"/> </resources>
a su archivo de UI. Simplemente eliminé esas filas y todo funciona bien (los recursos son visibles en la GUI)
fuente
Creo que la respuesta breve a este problema es que las personas están cargando el proyecto directamente en QGIS en lugar de ejecutarlo:
El archivo
resources.py
solo se genera después de la primera vez quemake deploy
se ejecuta.fuente
Así es como solucioné el problema:
Ejecutar-> cmd
Vaya a la ubicación de su generador de complementos (es decir: c: /users/rafik_pc/.qgis2/python/plugins/pluginbuilder)
escriba el siguiente comando:
(Usé -py2 porque estoy usando python 2.7)
reinicie su QGIS.
HECHO.
fuente
Lo que funcionó para mí al final fue usar recursos originales que surgieron cuando creé el paquete con el generador de complementos y usarlo en todos los demás cuadros de diálogo de mi complemento. Todavía no sé por qué cambia el ícono principal de mi complemento al volver a cargar el complemento, pero sigo teniendo gráficos en otros cuadros de diálogo.
Desearía que esto fuera diferente por muchas razones. Para construir un complemento simple, este enfoque probablemente funcione. Es una cosa de organización.
Debido a que tuve tantos problemas con estos recursos, he creado resources.py y resources_rc.py probablemente por eso tengo problemas al recargar.
No tengo tiempo para lidiar con este problema, pero el equipo de desarrollo de QGIS debería prestarle atención, ya que bloquea a las personas para hacer hermosos complementos: D
Lo que terminé haciendo es tener algo simple:
antes de llamar a la clase UI.
Gracias por ayudarme con este desastre.
PD: debe "compilar" sus recursos antes de agregarlos a su archivo * .ui y usar los mismos recursos -> importar recursos en todos sus cuadros de diálogo de complementos. Espero que esto ayude a alguien.
fuente
Ejecute el mismo comando usando
Funcionará
fuente