#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
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
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.
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