subprocess.run('export FOO=BAR', shell=True)
これは単純に機能しません。理由はわかりません。Pythonsのサブプロセスで 'export'コマンドを実行できません。
私は私のpython(3.5.1)スクリプトから環境変数を設定しようとしています。上記の行を実行すると何も起こりません。エラーは発生せず、自分自身で環境変数をチェックすると、設定されていません。 subprocess.run()
と
その他のシェルコマンドなどls
やpwd
としての仕事、ではなく、export
を行います。
.run()
がPython 3.5で追加されました(あなたがそれを認識しなかった場合)が、.call()
と.Popen()
という上記の行を試してみましたが、結果に変更はありません。
私はos.environ['FOO'] = "BAR"
とpythonで環境変数を設定することができることを承知していますが、私はシェルを使用するには、私のプロジェクトに多くのコマンド、と私はexport
簡単にを使用して行いますれ、一緒に文字列を複数のコマンドにする必要がありますことを期待しますos.environ
より。
私のプロジェクトは、マシン上で実行されているLinux上で動作します。
考えてみましょう:それぞれの 'subprocess.run(shell = True)'は新しいシェルを開始します。 2つの端末を開き、ある端末で 'export FOO = BAR'と別の端末で' echo $ FOO'と入力します(別のシェルを実行する2番目の端末は新しい '$ FOO'値を表示しません)。これは、 'cd'がシェル組み込みであるのと同じ理由です(現在のプロセスの作業ディレクトリを変更し、別のプログラムであれば' cd'は親プロセスの環境を変更する必要があります)。 (通常))。 [親プロセスの作業ディレクトリを設定するにはどうすればいいですか?](http://stackoverflow.com/q/2375003/4279) – jfs