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é ?

#1 Wed 04 March 2020 14:15

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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??? big_smile

Pas la peine de poster 6 fois la même question au passage....

En 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é smile

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: 3829

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 smile

Hors ligne

 

#5 Wed 04 March 2020 15:53

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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)

En ligne

 

#6 Wed 04 March 2020 15:55

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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 big_smile)

Dernière modification par YoLecomte (Wed 04 March 2020 17:17)

En ligne

 

#7 Wed 04 March 2020 18:05

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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à)

En ligne

 

#8 Thu 05 March 2020 10:18

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

Re: QGIS 3.X: traduction plugin python 2 vers 3

Pas de souci, c'était vraiment à prendre au seconde degrés big_smile

Le passage a PyQT5 consiste principalement à corriger les imports

En ligne

 

#9 Thu 05 March 2020 11:17

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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é wink

Dernière modification par YoLecomte (Thu 05 March 2020 11:24)

En ligne

 

#10 Thu 05 March 2020 11:28

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

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 big_smile
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: 247

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 big_smile

En ligne

 

#12 Thu 05 March 2020 16:02

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

Re: QGIS 3.X: traduction plugin python 2 vers 3

YoLecomte a écrit:

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 big_smile


Il eut fallu lui faire parvenir un devis avant, non? big_smile
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: 247

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)

En ligne

 

#14 Fri 13 March 2020 17:22

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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)

En ligne

 

#15 Tue 24 March 2020 12:09

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

Re: QGIS 3.X: traduction plugin python 2 vers 3

Il suffit d'enlever cView

item.name() devrait suffir

En ligne

 

#16 Tue 24 March 2020 14:39

YoLecomte
Participant assidu
Lieu: Epinal
Date d'inscription: 7 Jul 2015
Messages: 247

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

En ligne

 

Pied de page des forums

Powered by FluxBB