430 votes

Rechargement des sous-modules dans IPython

Je travaille actuellement sur un projet de python qui contient les sous-modules et utilise numpy/scipy. Ipython est utilisé comme console interactive. Malheureusement, je ne suis pas très heureux avec le flux de travail que j'utilise maintenant, j'aimerais avoir quelques conseils.

Dans IPython, le cadre est chargé par un simple import commande. Cependant, il est souvent nécessaire de modifier le code dans l'un des submodules du cadre. À ce stade, un modèle est déjà chargé et j'utilise IPython pour interagir avec elle.

Maintenant, le cadre contient de nombreux modules qui dépendent les uns des autres, c'est à dire lorsque le cadre est initialement chargé le module principal est l'importation et la configuration de la submodules. Les modifications apportées au code exécuté seulement si le module est rechargé à l'aide d' reload(main_mod.sub_mod). C'est gênant car j'ai besoin de recharger tous les modules changés individuellement à l'aide du chemin d'accès complet. Il serait très pratique si reload(main_module) permettrait également de recharger tous les sous-modules, mais sans rechargement de numpy/scipy..

J'aimerais avoir des conseils qui m'aide à améliorer mon travail. Merci.

632voto

pv. Points 9935

IPython est livré avec une magie de rechargement automatique :

Il se recharge tout a changé modules chaque fois avant l’exécution d’une nouvelle ligne. La façon dont cela fonctionne est légèrement différente de celle . Quelques mises en garde s’applique, tapez pour voir ce qui peut mal se passer.

EDIT: locd typo fixe -> charger

31voto

RafG Points 387

Dans IPython 0,12 (et peut-être même avant), vous pouvez utiliser ceci :

C’est essentiellement la même que la réponse par pv., sauf que l’extension a été renommée et est maintenant chargée à l’aide de `` .

18voto

Sven Marnach Points 133943

IPython offre `` de manière récursive de la recharger tous les sous-modules. Personnellement, je préfère utiliser le `` magique de commande (même si elle n’effectue pas une recharge profonde, comme souligné par John Salvatier dans les commentaires).

5voto

Y.H Wong Points 3810

Comment à ce sujet :

Cela doit recharger efficacement l’intégralité de l’arborescence des modules et sous-modules que vous lui donnez. Vous pouvez aussi mettre cette fonction dans votre .ipythonrc (je crois) donc il est chargé chaque fois que vous démarrez l’interprète.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X