2021年6月16日水曜日

Python のサブプロセスで環境変数を扱う方法

Python のサブプロセスで環境変数を扱う方法

概要

例えば環境変数でコマンドの設定をする場合などに使えます (ex: PYTHONPATH や FLASK_APP、KUBECONFIG など)

環境

  • macOS 11.4
  • Python 3.8.3

サンプルコード

import subprocess, os
my_env = os.environ.copy()
my_env["MSG"] = "hello!"

process = subprocess.Popen(["ruby", "msg.rb"], stdout=subprocess.PIPE, env=my_env)
stdoutdata, _ = process.communicate()

print(stdoutdata)
print(process.returncode)
  • vim msg.rb
puts ENV["MSG"]

ポイント

  • Python 内での環境変数への値の設定は os.environ を使う
  • subprocess に環境変数を渡す場合は env オプションを使う
  • 結果の取得は communicate() を使う

0 件のコメント:

コメントを投稿