Je sais comment le recharger régulièrement un module Python en Python interprète session. Cette question des documents de la façon de le faire assez bien:
Comment puis-je décharger (reload), un module Python?
Pour une raison quelconque, j'ai du mal à le faire au sein de Django reinhardt "manage.py coque" interprète de la session. Pour reproduire ce problème, démarrez la base de Django tutoriel trouvé ici:
La rédaction de votre premier Django app, partie 1
Après la création de la "sondages" de l'application et de "Sondage" de la classe, démarrage de l'interprète par "manage.py shell" et d'importer les "sondages" de l'app en elle.
import polls.models as pm
De créer un "nouveau Sondage" objet:
p = pm.Poll()
Tout est bien et bon jusqu'à présent. Maintenant, retournez à votre source et d'ajouter n'importe quelle méthode ou d'un attribut. Par exemple, j'ai ajouté:
def x(self):
return 2+2
Maintenant, retournez à l'interprète et de "recharger" le module:
reload(pm)
Maintenant, essayez d'utiliser votre nouvelle méthode ou d'un attribut:
p1 = pm.Poll()
p1.x()
Vous obtiendrez ce message:
'Poll' object has no attribute 'x'
Ce qui donne? J'ai aussi essayé de réexécuter la commande importer, importer le module en utilisant une syntaxe différente, la suppression de toutes les références à un "Sondage" des objets ou le "Sondage" de la classe. J'ai aussi essayé avec à la fois l'interpréteur IPython et avec la plaine Python (v2.6) interprète. Rien ne semble fonctionner.
En utilisant les mêmes techniques avec l'arbitraire d'un module Python dans un interpréteur de session fonctionne parfaitement. Je n'arrive pas à le faire fonctionner dans de Django reinhardt, "coquille" de la session.
Par ailleurs, si cela fait une différence, je vais le faire sur une Ubuntu 9.04 de la machine.