2016-04-06 10 views
0

Ich bin derzeit laufe eine Python-Datei, die ich als Bibliothek-Modul als Skript erstellt und vorbei in einem Befehlszeilenargument Genauer gesagt, die Art, wie ich jetzt eine Python-Datei leite istWie führe ich Python Library Module als Skript aus einer anderen Python-Datei aus? (Python 3.5.1)

python3 -m path.to.python.file --option1=OPTION_VALUE

Ich habe tatsächlich mehrere dieser Dateien und ich möchte sie alle aus einer anderen Python-Datei ausführen. Wie würde ich das tun? Wenn es einfacher wird, ist der Wert des Arguments option1 für alle gleich.

Ich habe viele andere StackOverflow-Posts in Bezug auf ähnliche Probleme gesehen, aber keine von ihnen scheint eine Python-Datei als Bibliotheksmodul als Skript auszuführen.

EDIT: Ich glaube, ich habe eine Antwort gefunden. Ich landete Sie folgendermaßen vorgehen:

p = subprocess.Popen(['python3', '-m', 
          'path.to.file', 
          '--option1=OPTION1_VALUE']) 
    p.communicate() 

Antwort

0

Eine Möglichkeit ist subprocess zu verwenden und nur sie alle als separate Programme laufen:

subprocess.Popen(['python3', '-m', 'path.to.python.file', '--option1=OPTION_VALUE']) 

Diese könnte nicht der beste Weg, es zu tun. Je nachdem, wie die Module strukturiert sind, können Sie sie möglicherweise import aufrufen und einige Funktionen aufrufen (was über die Befehlszeile geschieht). Ohne die Struktur dieser Module zu sehen, ist es jedoch schwierig, klare Ratschläge zu geben, wie Sie das tun könnten.

+0

Großartig! Das funktioniert fast für mich. Der Grund, warum dies nicht genau zu meinem Anwendungsfall passt, ist, dass ich grundsätzlich eine Reihe von Dateien in der richtigen Reihenfolge ausführen möchte. Einige sind SQL-Skripte und einige sind Python-Dateien (Beide erstellen letztlich Tabellen in einer Datenbank. Für die Python-Dateien verwende ich sqlalchemy/pandas). Ich möchte diese Dateien in einer bestimmten Reihenfolge ausführen können. Es sieht so aus, als wenn ich 'subprocess.Popen' benutze, dass am Ende immer die Python-Dateien laufen. Gibt es eine Möglichkeit für mich, dies zu tun, aber die Dateien in der richtigen Reihenfolge ausführen zu können? – Vincent

Verwandte Themen