Comment puis-je obtenir une référence à un module à partir de ce module? Aussi, comment puis-je obtenir une référence au package contenant ce module?
Comment puis-je obtenir une référence à un module à partir de ce module? Aussi, comment puis-je obtenir une référence au package contenant ce module?
Réponses:
import sys
current_module = sys.modules[__name__]
Une autre technique, qui n'importe pas le module sys, et sans doute - dépend de votre goût - plus simple:
current_module = __import__(__name__)
Sachez qu'il n'y a pas d'importation. Python importe chaque module une seule fois.
Si vous avez une classe dans ce module, la __module__
propriété de la classe est le nom du module de la classe. Ainsi, vous pouvez accéder au module via sys.modules[klass.__module__]
. Cela fonctionne également pour les fonctions.
__module__
propriété ne soit pas un module, mais une chaîne; ainsi a inspect.getabsfile(func.__module__)
échoue avec " TypeError: 'os' n'est pas un module, une classe, une méthode, une fonction, une traceback, un cadre ou un objet de code "; tandis que inspect.getabsfile(sys.modules[o.__module__])
semble passer.
Vous pouvez obtenir le nom du module actuel en utilisant __name__
La référence du module se trouve dans le sys.modules
dictionnaire.
Voir la documentation Python
Vous pouvez le transmettre de l'extérieur:
mymod.init(mymod)
Pas idéal mais cela fonctionne pour mon cas d'utilisation actuel.