Python-Module dynamisch importieren

8

Ich versuche, die Mitglieder eines Moduls zu importieren, dessen Name nicht bekannt ist. Anstelle von

%Vor%

Ich verwende:

%Vor%

Wie kann ich eine ähnliche Sache für den Fall from foo import bar erreichen, anstatt auf ein "eval" zurückzugreifen?

Update: Es scheint, dass fromlist den Trick gemacht hat. Gibt es eine Möglichkeit, from foo import * zu emulieren? fromlist=['*'] hat den Trick nicht gemacht.

    
ustun 20.03.2012, 08:47
quelle

4 Antworten

10

Um from foo import * zu emulieren, könnten Sie dir verwenden, um die Attribute des importierten Moduls zu erhalten:

%Vor%

Die Verwendung von from foo import * ist im Allgemeinen verpönt und würde es noch mehr nachahmen, würde ich mir vorstellen.

    
zeekay 20.03.2012, 09:42
quelle
9
%Vor%

für weitere Informationen help(__import__)

    
lollo 20.03.2012 08:53
quelle
1

Sie können den Import dynamisch mit Hilfe von __import__ durchführen. Es gibt fromlist Schlüsselargument in __import__ , um from foo import bar aufzurufen.

    
Nilesh 20.03.2012 09:03
quelle
0

Manchmal möchten Sie eine von vielen Konfigurationsdateien importieren, von denen jede verschiedene Werte für die gleichen benannten Variablen, DICTs usw. hat.

Sie können das nicht einfach tun:

%Vor%

Die Erklärung, warum dies nicht funktioniert, liegt über meiner Gehaltsstufe und schließt Schließungen und Namespaces ein. Was ich gefunden habe, war, die mother-Funktion mit 'module_name' als Zeichenfolgenargument aufzurufen und dann die betreffende Variable dynamisch zu importieren, wenn ich sie wirklich brauchte:

%Vor%

Bingo .... Sie haben einen dynamischen Import aller gewünschten Variablen von einem importierten Modul zur Laufzeit.

    
neil.millikin 03.05.2013 03:57
quelle

Tags und Links