问题:
今天遇到一个问题,我用一个python module通过subprocess以shell的方式调用另一个python module,结果导致丢失环境变量。
事实上,无论是python还是java,还是cronjob,都会遇到这个问题。也就是通过终端调用另一个组件时,会遇到丢失环境变量的问题。
解决方案:
1. cmd = "alias python='python2.6'\npython -V"
2. cmd = "source /home/group_aso/.bash_profile\npython -V"
两者并无本质上的区别。
需要特别指出的是,与shell不同,这里需要使用"\n"而不是";"
代码:
import sys, subprocess
def exec_cmd(cmd):
"""Run shell command"""
p = subprocess.Popen(cmd,stdin = subprocess.PIPE, \
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT,
shell = True)
log_content = p.communicate()[0]
return p.returncode, log_content
def main():
# Init #
current_module_home &