私はPythonスクリプトでシェルに設定する環境変数に関する情報を含むXMLを持っています。Popenを使用しているときにPython、現在のシェル環境変数を変更しますか?
<envVar name='QTDIR'>/homeqt/libs.qt4/qt4.5.1</envVar>
<envVar name='MAKE'>which make</envVar>
このスニペットのこの部分は、環境変数QTDIRを設定して作るために私のPythonスクリプトに指示します:ここではXMLの抜粋です。
私の懸念は、上記の変数を設定する方法の違いです。
os.environ['QTDIR'] = "/homeqt/libs.qt4/qt4.5.1"
しかし、私は私のMAKE変数を設定し、これを使用することはできません、私はコマンドを実行する必要がある」
を作るた:私は、環境変数を設定して、このような何かをするためにはos.environ使用できることを知っています"(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)
をしかし、私はこれを行う場合、変数がない現在のシェルのために、サブプロセスにのみ設定されます。
私の質問は、私が欲しいものをする方法があるということですか?私は、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シェルスクリプトを用意しています。私はできるだけ多くの情報をXML内で移動し、Pythonスクリプトが単にそこから抽出されたジョブを呼び出させるようにします。私はpythonスクリプトをできるだけシンプルにしたい。それが理由です。それで、それは可能ですか? – peterphonic
@peterphonicだから、特別に扱わなければならない値をいくつか持たせたいと思っています。 – millimoose