2016-07-23 20 views
0

Ich versuche, ein Skript zum automatischen Kompilieren von Apache zu erstellen. Leider muss ich bei meiner Arbeit jeden einzelnen Apache kompilieren, den ich installiere.
So kam ich mit diesem kleinen Code, um einen Befehl auszuführen:Ausführen von Befehlen auf Python

print("Source location %s" % source_location) 
print("Configure command %s" % configure_command) 
config = subprocess.Popen(configure_command, stdout=subprocess.PIPE, shell=True) 
(output, err) = config.communicate() 
config_status = config.wait() 
print("Return configure status = %s" % config_status) 

Im Moment habe ich auf der configure Teil bin stecken.
Grundsätzlich ist die Konfigurationszeile ist wie folgt:

/Volumes/nirvash/script/workarea/httpd-2.2.31/configure prefix =/tmp/Apache-2.2.31-instance1 --enable mods-shared = alle --enable-proxy --enable-proxy-connect --enable-proxy-ftp --openable-proxy-http --enable-deflate --enable-cache --enable-disk-cache - enable-mem-Cache --enable-Datei-Cache --with-included-April --with-mpm = Arbeiter

das Problem ist, dass, wenn der apache kompiliert wird, ist es (mkdir) schafft eine „schließen "Verzeichnis innerhalb der httpd-2.2.31. In diesem Fall wird das Verzeichnis im bin-Verzeichnis meines Skripts erstellt.
So wird das Verzeichnis erstellt, in dem das Skript ausgeführt wird.

Ist es möglich, das zu beheben? Gibt es eine Möglichkeit, die Konfiguration in dem Verzeichnis auszuführen, das kompiliert wird?

Antwort

1

Sie können os.chdir verwenden, um das aktuelle Verzeichnis Ihres Skripts so zu ändern, dass es dem Verzeichnis entspricht, das den Quellcode enthält.

os.chdir(source_location) 

Alternativ können Sie configure_command zum ersten Änderung Verzeichnisse ändern cd vor dem Ausführen configure verwenden.

configure_command = 'cd "%s" && %s' % (source_location, configure_command) 
Verwandte Themen