#1 Wed 04 March 2020 14:15
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
QGIS 3.X: traduction plugin python 2 vers 3
Bonjour,
Pour ce genre de question , merci de fournir un extrait de code pertinent ou du moins un exemple permettant de reproduire.
Merci de fournir l'erreur en texte brut plutôt qu'en image également.. (entre des balises <code> c'est encore mieux).
D'après ce que je comprend, le deuxième argument de qRegisterResourceData attends un objet de type bytes mais vous lui passé une str. C'est probablement du au passage a python 3 qui a une gestion complémentent différente des chaines de caractères. Encore une fois, sans le code impossible d'en dire plus...
Personne ne fais de python chez Enedis???
Pas la peine de poster 6 fois la même question au passage....
Hors ligne
#2 Wed 04 March 2020 14:25
- Njoy
- Participant actif
- Lieu: Lyon
- Date d'inscription: 29 Nov 2018
- Messages: 89
Re: QGIS 3.X: traduction plugin python 2 vers 3
Bonjour,
@YoLecomte : non non ils sont tous à la machine à café
Intéressé de connaitre en détail vos manœuvres pour réussir cette translation 2.0 -> 3.0, merci d'avance
Hors ligne
#3 Wed 04 March 2020 15:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3882
Re: QGIS 3.X: traduction plugin python 2 vers 3
Bonjour,
@Njoy, un peu de lecture par ici (https://github.com/qgis/QGIS/wiki/Plugi … -to-QGIS-3), peut-être?
Hors ligne
#4 Wed 04 March 2020 15:05
- Njoy
- Participant actif
- Lieu: Lyon
- Date d'inscription: 29 Nov 2018
- Messages: 89
Re: QGIS 3.X: traduction plugin python 2 vers 3
Merci les gars
Hors ligne
#5 Wed 04 March 2020 15:53
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
En général je fonctionne selon cette procédure pour faire des migrations de plugin:
Je crée une branche dédié dans mon système de versioning et je fais toute les modifs dedans:
1) corriger le code python2 vers python3 (gestion des strings principalement) (2to3 peut s'en occuper la plupart du temps)
2) corriger les imports et les appels pyqt4 vers pyqt5 (souvent rapide, attention cependant au style utilisé pour la connexion de signaux...)
3) corriger les imports et instructions de l'API qgis qui ont changés (c'est la partie où la quantité de travail est la plus variable)
A cette étape, je peux accéder et utiliser le plugin sous QGIS3
4) batterie de test (unitaire et fonctionnel) pour vérifier que tout fonctionne comme prévu et à chaque erreur correction à la volée jusqu'à ce que tout roule.
5) publication de la nouvelle version, mise en prod, etc...
Parfois c'est long et semé d’embûche, parfois ça va vite...
Le 2to3 fournis par python va s'occuper de mon étape 1) du mieux qu'il peut
il y a un qgis2to3 qui peut aider pour les étapes 2) et 3) (voir le lien de @SANTANNA)
Personnellement, j'évite d'utiliser ces outils en écriture pour profiter de la migration pour améliorer la base de code.
La ressource fournie par @SANTANNA est bien sur incontournable pour ce genre de travail...
Cordialement,
Dernière modification par YoLecomte (Wed 04 March 2020 17:14)
Hors ligne
#6 Wed 04 March 2020 15:55
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
@L.Guerard Dois-t-on comprendre que le cabinet dont vous faites partie à accepté de travailler sur une mission alors qu'il n'avait pas les compétences pour la mener à bien??
(A prendre à la légère, on est tous passé par les problématiques que vous rencontrez )
Dernière modification par YoLecomte (Wed 04 March 2020 17:17)
Hors ligne
#7 Wed 04 March 2020 18:05
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
A la relecture de votre deuxième message @L.Guerard, j'ai l'impression que vous vous êtes arrêté à l'étape 1) de la procédure que j'ai décrite. Il convient de réaliser les autres étapes pour finaliser votre migration! (notamment Pyqt4 --> PyQt5, je pense que l'erreur que vous avez montrée viens de là)
Hors ligne
#8 Thu 05 March 2020 10:18
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
Pas de souci, c'était vraiment à prendre au seconde degrés
Le passage a PyQT5 consiste principalement à corriger les imports
Hors ligne
#9 Thu 05 March 2020 11:17
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
Non ca ne suffit pas et ce n'est pas 3 vers 4 mais 4 vers 5 normalement.
https://www.opengis.ch/fr/2018/04/13/po … and-tools/
Sinon une ressource intéressante est de télécharger le code d'un plugin qui fonctionne sous QGIS3 pour voir comment tout cela est codé
Dernière modification par YoLecomte (Thu 05 March 2020 11:24)
Hors ligne
#10 Thu 05 March 2020 11:28
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3882
Re: QGIS 3.X: traduction plugin python 2 vers 3
Bonjour,
j'ai simplement changé les PyQt3 et PyQt4... je ne sais pas du tout si cela suffit.
Je crains que ce soit loin d'être suffisant. Trop facile, sinon
La version majeure a changé parce qu'il y a de grosses modifications dans l'architecture, entraînant des incompatibilités: une classe ou une méthode a pu être renommée/déplacée/supprimée, ses paramètres ont pu changer en nombre ou en type... donc il va falloir traquer ces modifications et les adapter à la version pyqt5. Ça peut aussi bien aller vite que pas du tout, selon la diversité de vos classes et fonctions utilisées.
quand je dis "changer" j'ai simplement effacé le "3" pour mettre un "4".
Vous vouliez dire "5" et, comme indiqué dans mon précédent lien, il ne faut pas juste remplacer "from PyQt4.xxx ..." par "from PyQt5.xxx ... " mais par "from qgis.PyQt.xxx ..." (pour alléger l'exercice actuelle lorsque ce sera à PyQt6)
EDIT: Ah! le temps d'écrire, je vois que YoLecomte est passé...
Dernière modification par SANTANNA (Thu 05 March 2020 11:29)
Hors ligne
#11 Thu 05 March 2020 15:44
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
je vous inscrirai dans les auteurs du plugin ?
Pas la peine mais si vraiment tu veux faire un geste, je peux te faire parvenir une facture
Hors ligne
#12 Thu 05 March 2020 16:02
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3882
Re: QGIS 3.X: traduction plugin python 2 vers 3
je vous inscrirai dans les auteurs du plugin ?
Pas la peine mais si vraiment tu veux faire un geste, je peux te faire parvenir une facture
Il eut fallu lui faire parvenir un devis avant, non?
Effectivement, pas la peine, et puis nous n'avons rien "auteuré" dans le plugin en soi.
Hors ligne
#13 Thu 05 March 2020 17:34
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
@SANTANNA Effectivement c'eut été opportun...
@L.Guerard pour la mise à jour des imports l'utilitaire qgis2to3 peut s'en occuper si vous n'avez d'import "splat" (du style from lib import *)
De toute manière si vous en avez c'est une mauvaise pratique (http://sametmax.com/pourquoi-il-faut-ev … en-python/) et c'est l'occasion de les retirer.
Dernière modification par YoLecomte (Thu 05 March 2020 17:35)
Hors ligne
#14 Fri 13 March 2020 17:22
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
Le plus propre est d'importer spécifiquement les fonctions, classes, constantes,... que tu utilises.
Code:
from qgis.core import QgsProject, QgsMapCanvas,...
http://sametmax.com/les-imports-en-python/
https://docs.python.org/fr/3/reference/import.html
https://courspython.com/modules.html
J'ajoute qu'un bon éditeur de code python saura te dire les imports manquants en analysant ton code (en tout cas PyCharm le fais très bien si l'interpréteur est bien configuré).
Dernière modification par YoLecomte (Fri 13 March 2020 17:26)
Hors ligne
#15 Tue 24 March 2020 12:09
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
Il suffit d'enlever cView
item.name() devrait suffir
Hors ligne
#16 Tue 24 March 2020 14:39
- YoLecomte
- Participant assidu
- Lieu: Epinal
- Date d'inscription: 7 Jul 2015
- Messages: 256
Re: QGIS 3.X: traduction plugin python 2 vers 3
Je ne sais pas non plus, l'API des composeurs a beaucoup entre QGIS2 et QGIS3. Tu dois comprendre ce que fais le code et l'adapter selon la nouvelle API. Tu trouveras la documentation ici: https://qgis.org/pyqgis/3.0/
par exemple : https://qgis.org/pyqgis/3.0/core/other/ … ayout.html
Hors ligne