Поскольку commands
долгое время считалось устаревшим, вам действительно следует использовать subprocess
, в частности subprocess.check_output
.Также cd thrift-0.8.0
влияет только на подпроцесс, а не на ваш.Вы можете либо вызвать os.chdir , либо передать аргумент cwd
в функции подпроцесса:
import subprocess, os
commands_to_run = [['yum', '-y', 'install',
'pypy', 'python', 'MySQL-python', 'mysqld', 'mysql-server',
'autocon', 'automake', 'libtool', 'flex', 'boost-devel',
'gcc-c++', 'perl-ExtUtils-MakeMaker', 'byacc', 'svn',
'openssl-devel', 'make', 'java-1.6.0-openjdk', 'git', 'wget'],
['service', 'mysqld', 'start'],
['wget', 'http://www.quickprepaidcard.com/apache//thrift/0.8.0/thrift-0.8.0.tar.gz'],
['tar', 'zxvf', 'thrift-0.8.0.tar.gz']]
install_commands = [['./configure'], ['make'], ['make', 'install']]
for x in commands_to_run:
print subprocess.check_output(x)
os.chdir('thrift-0.8.0')
for cmd in install_commands:
print subprocess.check_output(cmd)
Поскольку CentOS поддерживает древние версии Python, вы можете использовать thisbackport вместо.
Обратите внимание, что если вы все равно хотите распечатать вывод, вы можете просто вызвать подпроцесс с помощью check_call
, так как подпроцесс наследует ваши stdout, stderr и stdin по умолчанию.