206 votes

module d'importation depuis une variable de chaîne

Je suis en train de travailler sur une documentation personnelle) pour imbriquée matplotlib (MPL) de la bibliothèque, qui diffère de la MPL propres fournis par les intéressés sous-module de paquets. Je suis en train d'écrire un script Python qui, je l'espère, permettra d'automatiser la génération de documents à partir d'avenir MPL versions.
J'ai choisi intéressés submodules/packages et souhaitez ajouter à la liste de leurs principales classes à partir de laquelle je vais générer la liste et de le traiter avec un pydoc

Le problème est que je ne peux pas trouver un moyen de demander à Python de charger des sous-module de chaîne. Ici est un exemple de ce que j'ai essayé:

import matplotlib.text as text
x = dir(text)

.

i = __import__('matplotlib.text')
y = dir(i)

.

j = __import__('matplotlib')
z = dir(j)

Et voici 3 comparaison des listes ci-dessus par le biais de pprint:

enter image description here

Je ne comprends pas ce qui est chargé en y - objet de base matplotlib plus quelque chose d'autre, mais il manque de l'information que je voulais et qui est la principale des classes à partir d' matplotlib.text package. C'est top de couleur bleu partie sur la capture d'écran (x de la liste)

S'il vous plaît ne pas suggérer Sphinx comme approche différente.

313voto

mzjn Points 14148

La fonction __import__ peut être un peu difficile à comprendre.

Si vous changez

 i = __import__('matplotlib.text')
 

à

 i = __import__('matplotlib.text', fromlist=[''])
 

alors i se rapportera à matplotlib.text .

Dans Python 2.7 et Python 3.1 ou version ultérieure, vous pouvez utiliser importlib :

 import importlib

i = importlib.import_module("matplotlib.text")
 

83voto

gecco Points 4063

Je pense que importlib.import_module est ce que vous recherchez. (Uniquement disponible pour Python> = 2.7 ou 3.x):

 importlib.import_module('matplotlib.text')
 

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