我有一個XML,它包含有關由我的python腳本設置到shell中的環境變量的信息。這裏是XML的片段:Python,使用Popen時更改當前shell環境變量?
<envVar name='QTDIR'>/homeqt/libs.qt4/qt4.5.1</envVar>
<envVar name='MAKE'>which make</envVar>
這段代碼的這一部分告訴我的python腳本設置環境變量QTDIR和MAKE。
我的關注點是如何設置上述變量。我知道,我可以使用os.environ設置環境變量,做這樣的事情:
os.environ['QTDIR'] = "/homeqt/libs.qt4/qt4.5.1"
但我不能用它來設置我的make變量,我不得不執行命令「這使得 「(獲取make可執行文件的路徑)。我的目標是使用相同的方法/函數來設置每個變量。
所以,我認爲做這樣的事情:
Popen("QTDIR=/homeqt/libs.qt4/qt4.5.1 ; export QTDIR", shell=True, stdout=PIPE, stderr=PIPE)
Popen("MAKE=which make ; export MAKE", shell=True, stdout=PIPE, stderr=PIPE)
但如果我這樣做,變量將只針對子集,而不是當前的shell。
所以,我的問題是,有沒有辦法做我想要的?我不想分析XML和做這樣的事情:
(僞)
if QTDIR has normal value
os.environ['QTDIR'] = "/homeqt/libs.qt4/qt4.5.1"
if MAKE has value to be executed
p = Popen("which make", shell=True, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
os.environ['MAKE'] = stdout
你爲什麼不想要? – Amber
我們有非常複雜的bash shell腳本,如果其他人構建我們的產品,則需要大量的shell腳本。我想在XML中儘可能移動大量信息,並使python腳本調用從中提取的作業。我希望python腳本儘可能簡單。這就是爲什麼。那麼,有可能嗎? – peterphonic
@peterphonic所以,你想有一些值得特別處理,但你不願意在任何地方處理它們? – millimoose