Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 20 September 2018 15:04

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

QGIS: ecriture de plugin - fichier resources.qrc

Bonjour,

J'ai installé QGIS 3.0.0 et j'essaie d'écrire un plugin QGIS en suivant le tutoriel ici : http://www.qgistutorials.com/fr/docs/bu … lugin.html

Pour la préparation du plugin, c'est OK, mais quand il faut lancer la compilation du fichier resources.qrc, ça se gâte :
J'ai cherché sur mon PC, et pyrcc4.exe n'existe pas dans l'install QGIS, mais dans un install Python que j'ai à côté de QGIS (dans C:\Python34\Lib\site-packages\PyQt4\)

J'ouvre OSGeo4W, je me place dans le répertoire de mon plugin, quand je lance la commande :

Code:

python C:\Python34\Lib\site-packages\PyQt4\pyrcc4.exe -o resources_rc.py resources.qrc

j'ai l'erreur :

Code:

File "C:\Python34\Lib\site-packages\PyQt4\pyrcc4.exe", line 1
SyntaxError: Non-ASCII character '\x90' in file C:\Python34\Lib\site-packages\Py
Qt4\pyrcc4.exe on line 1, but no encoding declared; see http://www.python.org/pe
ps/pep-0263.html for details

J'ai bien essayé, comme vu sur un forum, de déclarer une variable d'environnement PYTHONIOENCODING, mais ça n'a pas d'effet.

Comment faire ?

Merci, Nico

Hors ligne

 

#2 Thu 20 September 2018 16:15

Sylther
Participant assidu
Lieu: Mpl
Date d'inscription: 17 May 2016
Messages: 186
Site web

Re: QGIS: ecriture de plugin - fichier resources.qrc

Bonjour,

Est-ce que l'encodage est bien spécifié dans le fichier ressource.py ?
Autrement dit est-ce qu'il commence (1ère ligne) par quelque chose comme

Code:

# -*- coding: utf-8 -*-

?

Bonne journée,
S.

Hors ligne

 

#3 Thu 20 September 2018 16:54

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS: ecriture de plugin - fichier resources.qrc

c'est un .exe, quand je l'ouvre dans un editeur, c'est du binaire, donc je peux pas voir.

Nico

Hors ligne

 

#4 Thu 20 September 2018 17:59

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS: ecriture de plugin - fichier resources.qrc

Il y a dans l'arborescence QGIS j'ai trouvé un script qui s'appelle pyrcc.bat qui lance une commande de pyrcc. Quand je le lance, ça semble marcher, mais au bout d'un moment, il détecte une erreur de syntaxe dans un script __init__.py.

La commande lancée :

Code:

c:\Users\Nicolas\.qgis2\python\plugins\cconverter>"C:\Program Files\QGIS 3.0\app
s\Python36\Scripts\pyrcc5.bat" -o C:\Users\Nicolas\.qgis2\python\plugins\cconver
ter\resources_rc.py C:\Users\Nicolas\.qgis2\python\plugins\cconverter\resources.qrc

Le message d'erreur :

Code:

Fatal Python error: Py_Initialize: unable to load the file system codec
  File "C:\PROGRA~1\QGIS3~1.0\apps\Python27\lib\encodings\__init__.py", line 123

    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax

Nico

Hors ligne

 

#5 Fri 21 September 2018 10:11

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3945

Re: QGIS: ecriture de plugin - fichier resources.qrc

Bonjour,
Le tutoriel que vous suivez a été calibré pour QGIS 2.x et cette version n'utilise pas les mêmes (versions) de bibliothèque que QGIS3 (plutôt python3 et qt5 par exemple). Autre différence, même si pas problématique pour le moment, le lieu de stockage de votre plugin n'est pas le bon (voir https://docs.qgis.org/testing/en/docs/u … -plugins).
Désolé, je ne connais pas de lien vers un tutoriel que je pourrais indiquer. Quelques recherches ici et là devraient vous aider à mettre les choses bout à bout.
Bon courage.

Hors ligne

 

#6 Fri 21 September 2018 10:26

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS: ecriture de plugin - fichier resources.qrc

Effectivement dans QGIS3, le répertoire de stockage des plugin n'est pas le même que pour QGIS2, j'ai recrée mon plugin dans le bon répertoire, maintenant dans QGIS, je le vois dans la liste des extensions, mais quand je veux l'activer, il me demande de compiler le fichier resources, donc retour au point de départ.


Quand je regarde mes chemin PATH, PYTHONPATH et PYTHONHOME, j'ai des choses bizarre, le problème vient peut-être de là :

Code:

C:\>echo %PYTHONHOME%
C:\PROGRA~1\QGIS3~1.0\apps\Python27

C:\>echo %PYTHONPATH%
;C:\Program Files (x86)\HOTOSM\python\2.5\site-packages

C:\>echo %PATH%
C:\PROGRA~1\QGIS3~1.0\apps\Python27\Scripts;C:\PROGRA~1\QGIS3~1.0\bin;C:\WINDOWS
\system32;C:\WINDOWS;C:\WINDOWS\system32\WBem

J'ai des pointage vers Python 2.7, ou vers des instances de python qui sont installées hors du cadre de OSGeo4W.

Comment modifier ça pour que ça pointe vers les bonnes instances de Python?
Et dans le PYTHONPATH, à quoi correspond HOTOSM ? j'ai pas de répertoire qui s'appelle comme ça...

Nico

Dernière modification par nico-29 (Fri 21 September 2018 10:29)

Hors ligne

 

#7 Fri 21 September 2018 11:57

Sylther
Participant assidu
Lieu: Mpl
Date d'inscription: 17 May 2016
Messages: 186
Site web

Re: QGIS: ecriture de plugin - fichier resources.qrc

nico-29 a écrit:

c'est un .exe, quand je l'ouvre dans un editeur, c'est du binaire, donc je peux pas voir.


Je parlais du fichier "ressource.py" qui n'est aps un binaire !

Hors ligne

 

#8 Sat 22 September 2018 12:17

nico-29
Participant assidu
Lieu: Brest
Date d'inscription: 2 Jun 2006
Messages: 185

Re: QGIS: ecriture de plugin - fichier resources.qrc

C'était effectivement une histoire de chemin python. En exécutant le script ci-dessous, ça fait pointer vers les bonnes instances de python, et la compilation du fichier resources.qrc fonctionne.

Code:

@echo off
SET OSGEO4W_ROOT=C:\PROGRA~1\QGIS3~1.0
call "%OSGEO4W_ROOT%"\bin\o4w_env.bat
call "%OSGEO4W_ROOT%"\apps\grass\grass-7.4.0\etc\env.bat
@echo off
path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin
path %PATH%;%OSGEO4W_ROOT%\apps\grass\grass-7.4.0\lib
path %PATH%;%OSGEO4W_ROOT%\apps\Qt5\bin
path %PATH%;%OSGEO4W_ROOT%\apps\Python36\Scripts

set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python36

Mais un autre problème apparait lors de l'utilisation du plugin :
par défaut dans le fichier resources, on a l'image de l'icone du plugin qui apparait dans la barre de menu de QGIS.
Tant je ne touche à rien, tout est OK.
Je veux rajouter une image dans le fichier resources, pour l'afficher dans le boite de dialogue utilisée par le plugin.
Dans l'arborescence du plugin, je crée un répertoire img, dans lequel je stocke mon image.
Dans Qt, j'ajoute mon image dans le fichier resources.
Je recompile le fichier resources (-> qui donne un fichier resources.py)

Mais quand j'ouvre QGIS, il ne veux plus charger le plugin, avec le message d'erreur :

Code:

Traceback (most recent call last):
              File "C:/PROGRA~1/QGIS3~1.0/apps/qgis/./python\qgis\utils.py", line 336, in startPlugin
                plugins[packageName] = package.classFactory(iface)
              File "C:/Users/Nicolas/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\cconv\__init__.py", line 35, in classFactory
                from .cconv import cconv
              File "C:/PROGRA~1/QGIS3~1.0/apps/qgis/./python\qgis\utils.py", line 664, in _import
                mod = _builtin_import(name, globals, locals, fromlist, level)
              File "C:/Users/Nicolas/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\cconv\cconv.py", line 31, in <module>
                from .cconv_dialog import cconvDialog
              File "C:/PROGRA~1/QGIS3~1.0/apps/qgis/./python\qgis\utils.py", line 664, in _import
                mod = _builtin_import(name, globals, locals, fromlist, level)
              File "C:/Users/Nicolas/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\cconv\cconv_dialog.py", line 31, in <module>
                os.path.dirname(__file__), 'cconv_dialog_base.ui'))
              File "C:\PROGRA~1\QGIS3~1.0\apps\Python36\lib\site-packages\PyQt5\uic\__init__.py", line 201, in loadUiType
                exec(code_string.getvalue(), ui_globals)
              File "<string>", line 22, in <module>
              File "C:/PROGRA~1/QGIS3~1.0/apps/qgis/./python\qgis\utils.py", line 664, in _import
                mod = _builtin_import(name, globals, locals, fromlist, level)
            ModuleNotFoundError: No module named 'resources_rc'

Si je renomme le fichier en resources_rc.py, ça ne marche pas non plus.

Une idée du problème ?

Nico

Hors ligne

 

Pied de page des forums

Powered by FluxBB