Wie importiere ich ein Modul als __main__?

8

Ich habe ein Modul mit dem üblichen

%Vor%

Idiom.

Ich möchte das von einem anderen Modul importieren und es dazu bringen, diesen Code auszuführen. Gibt es eine Möglichkeit, dies zu tun?

Ich sollte erwähnen, dass ich aus Gründen, auf die ich hier nicht eingehen werde, den Code im importierten Modul nicht ändern kann. Ich muss das Importverfahren irgendwie ändern, so dass sein Name beim Importieren wichtig ist, vielleicht mit Ihooks oder ähnlichem.

    
xorsyst 22.06.2012, 16:47
quelle

6 Antworten

8

Das Skript wird ausgeführt, statt es zu importieren. Aber ich halte das für eine extrem haschische Lösung.

Das ideale Muster wäre jedoch:

%Vor%

So können Sie tun:

%Vor%

BEARBEITEN : Beantworten Sie nach der Klärung, dass der Modulcode nicht bearbeitet werden kann.

Ich würde dies in keinem Produktionscode empfehlen, dies ist eine "Verwendung auf eigene Gefahr" -Lösung.

%Vor%     
unode 22.06.2012, 16:51
quelle
7

Wie in den anderen Antworten erwähnt, ist dies eine schlechte Idee, und Sie sollten das Problem auf andere Weise lösen.

Unabhängig davon, wie Python funktioniert, ist es so:

%Vor%     
mic_e 14.07.2015 00:55
quelle
4

Fügen Sie diesen Code in eine Funktion ein und rufen Sie ihn auch von dem Modul auf, in das Sie ihn importieren.

%Vor%

Und dann importieren Sie es in das Modul:

%Vor%     
Gareth Latty 22.06.2012 16:50
quelle
0

Code in einer Hauptgruppe ist normalerweise nie sinnvoll, um direkt zu laufen. Wenn Sie es ausführen möchten, verwenden Sie subprocess , um es in einem anderen Python-Interpreter auszuführen.

    
Ignacio Vazquez-Abrams 22.06.2012 16:51
quelle
0

Hier ist ein Beispiel für ein Hauptmodul in Python:

%Vor%

Sie können jedoch auch

einschließen %Vor%

in jedem Modul, das Sie als Hauptprogramm ausführen möchten.

Wenn Sie beispielsweise ein Bibliotheksmodul haben, können Sie dieses Konstrukt immer verwenden, um bestimmte Tests durchzuführen.

    
octopusgrabbus 22.06.2012 23:28
quelle
0

Setzen Sie es in eine Funktion:

%Vor%     
lvc 22.06.2012 16:51
quelle

Tags und Links