Python __import__ ne fonctionne pas comme prévu
Lors de l'utilisation de __import__
avec un pointillé nom, quelque chose comme: somepackage.somemodule
, le module renvoyé n'est pas somemodule
, tout ce qui est retourné semble être la plupart du temps vide! ce qui se passe ici?
Vous devez vous connecter pour publier un commentaire.
De l'python docs sur
__import__
:Pour paraphraser:
Lorsque vous demandez
somepackage.somemodule
,__import__
retournesomepackage.__init__.py
, qui est souvent vide.Il sera de retour
somemodule
si vous fournissezfromlist
(une liste des noms de variable à l'intérieur desomemodule
vous voulez, qui ne sont en fait pas retourné)Vous pouvez aussi, comme je l'ai fait, l'utilisation de la fonction qu'ils suggèrent.
Note: j'ai posé cette question avec l'intention de répondre moi-même. Il y a un gros bug dans mon code, et d'avoir mal diagnostiquée, il m'a fallu du temps pour le comprendre, alors j'ai pensé aider à la soi une communauté et après la chasse aux sorcières que j'ai rencontré ici.
python 2.7 a importlib, parsemée de chemins de résoudre comme prévu
Il y a une solution plus simple, comme expliqué dans la documentation:
Tout simplement si vous souhaitez importer un module (éventuellement dans un package) par nom, vous pouvez appeler __import__() et recherchez-la dans le sys.modules:
Il y a quelque chose qui fonctionne comme vous le souhaitez:
twisted.python.reflect.namedAny
:Pour python 2.6, j'ai écrit ce morceau de code:
Le chemin que j'ai fait est
alors je peux accéder à tout contenu à partir de par