imp.reload. Une subtilité pour les packages ?

imp.reload. Une subtilité pour les packages ? - Python - Programmation

Marsh Posté le 25-03-2015 à 17:37:28    

Bonjour
 
Je débute en Python.
J'en fais principalement pour scripter dans Blender (un logiciel d'image de synthèse, avec un python embarqué pour le scripting)
 
Le langage me plait bien, rapide et efficace, mais je coince sur le imp.reload()
 
Un fichier python A) fait un import  d'un autre, B), ca fonctionne.
Je modifie B, python garde en mémoire l'ancien B. Certes, ok, bon, je vais m'y faire, pas grave  :D .
 
Tant que j'avais mes fichiers dans un même répertoire, le reload fonctionnait.
Pour faire un peu plus propre, j'ai découpé en divers packages, et là, les reload() ne fonctionnent plus.
 
Mes imports sont maintenant  
import nomDuPackage.B
 
l'import fonctionne, mais pas le reload.
J'ai essayé d'ajouter tous les répertoires dans le Pythonpath. Dans la console python, ça fonctionne,  
import nomDuPackage.B
...
import imp
imp.reload(B)
=> Hop, ca fonctionne.
 
Par contre, quand je lance A avec les mêmes commandes dans le fichier A), ça ne fonctionne plus depuis la séparation en package.
 
Comme la console et tutti quanti est dans blender, pour pouvoir recharger à la moindre modif, je dois sortir et rerentrer dans Blender, c'est particulièrement rellou.
 
Du coup, 2 questions
=> Ou est-ce que je me plante ?
=> Est-ce qu'il y a une option pour systématiquement forcer le reload des fichiers / classes modifiées pour la période de développement ?
 
J'ai déjà pas mal cherché sur le net, sans trouver mon bonheur.

Reply

Marsh Posté le 25-03-2015 à 17:37:28   

Reply

Marsh Posté le 26-03-2015 à 06:12:03    

Comme souvent, c'était un problème d'interface chaise / clavier.
Mon, reload était à un endroit ou l'import n'avait pas encore été fait.
Donc reload ne connaissait pas l'objet a recharger.
 
problème solved.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed