2016-07-23 2 views
0

Я пытаюсь создать скрипт для автоматической компиляции apache. К сожалению, в моей работе мне нужно скомпилировать каждый каждый apache, который я устанавливаю.
Итак, я придумал этот небольшой код, чтобы выполнить команду:Запустить команды на 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) 

На данный момент я застрял на части конфигурирования.
В основном строка конфигурации выглядит так:

/Volumes/nirvash/script/workarea/httpd-2.2.31/configure prefix =/TMP/апач-2.2.31-instance1 --enable- mods-shared = all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-deflate --enable-cache --enable-disk-cache - включить-MEM-кэш --enable-файл кэш --with-включенный-апреля --with-MPM = рабочего

проблема заключается в том, что когда апач компилирует, он создает (MkDir) «включает "в каталоге httpd-2.2.31. Но в этом случае каталог создается в каталоге bin моего скрипта.
Итак, каталог создан, когда скрипт запущен.

Можно ли исправить это? Есть ли способ запустить configure в каталоге, который компилируется?

ответ

1

Вы можете использовать os.chdir, чтобы изменить текущий каталог вашего сценария так же, как каталог, содержащий исходный код.

os.chdir(source_location) 

В качестве альтернативы, вы можете изменить configure_command для первых каталогов изменения с использованием cd перед запуском configure.

configure_command = 'cd "%s" && %s' % (source_location, configure_command) 
Смежные вопросы