Page 1 sur 1

[python] Exécution du code modifié dans l'éditeur externe

MessagePublié: 21 Mai 2019 08:57
par mike63110

La modération a écrit:Pour la bonne tenue de ce forum, veillez à respecter la syntaxe des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). Merci de corriger cette balise dans votre titre

Bonjour
J'utilise APSO 1.1.4 pour accéder à l'éditeur de code Geany.
Le code python inclus dans les fichiers LibO est copié dans un dossier temporaire avant édition. Quand j'ai modifié mon code et que je souhaite l'exécuter pour valider mes modifications, les modifications ne sont pas effectives. Je dois fermer le fichier LibO concerné après l'avoir enregistré puis le ré-ouvrir pour enfin exécuter le code modifié.
Je cherche le moyen de mettre à jour le code python qui est semble-t-il dans un tampon mémoire de LibO avec le code modifié dans mon éditeur. Y a-t-il une astuce ?
Je précise que le problème est identique pour un module python extérieur au fichier LibO. Il faut alors fermer complètement LibO (tous les fichiers ouverts) pour voir les modifications prises en compte.
Merci d'avance...

Re: [python] Exécution du code modifié dans l'éditeur extern

MessagePublié: 21 Mai 2019 10:59
par Dredd
Salut,

Aucune précision quant à l'OS utilisé, as-tu déjà fait une mise à jour de ta version obsolète ?

Re: [python] Exécution du code modifié dans l'éditeur extern

MessagePublié: 21 Mai 2019 11:26
par Hubert Lambert
Bonjour,

D'abord je te conseille de faire la mise à jour de l'extension, qui en est à la version 1.2.3 :wink: .

Concernant les scripts embarqués dans un document
Il y a une limitation qui fait que le programme ne reconnaît pas la mise à jour d'un script embarqué lorsque celui-ci est appelé par un élément de l'interface utilisateur (bouton, contrôles de formulaire, événement...). En revanche, le même script modifié exécuté à partir d'APSO s'exécutera correctement. J'ai signalé le problème en proposant une solution (https://bugs.documentfoundation.org/sho ... ?id=105609), mais ça ne bouge pas énormément jusqu'ici.

Concernant les bibliothèques externes
Ces bibliothèques sont en effet mises en cache par l'interpréteur python. Pour contourner le problème, il suffit de forcer le rechargement depuis le fichier qui l'utilise (le temps du développement) :
Code : Tout sélectionner   AgrandirRéduire
import ma_bibli_externe
try:
    from imp import reload
except ImportError:
    pass
reload(ma_bibli_externe)

Le fichier qui contient l'instruction "reload" doit lui-même avoir été modifié pour que le rechargement soit effectif.

Cordialement.