Pythonで環境変数を参照する
最近はどっぷりとPythonに浸かっているので,
別々のコンピュータで,互換性の高いプログラムを書きたいことが多いです.
その時に,環境変数が参照できると便利なので,
N番線時になりますが,メモっておきます.
結論から言うと,os.environ.get(varname[, value])
でできます.
僕のuse caseで言うと,こんな感じで使いました.
openAIのbaselinesと言うライブラリを浸かっていましたが,
ログのフォーマットを確認したい時に使いました.
os.environ.get('OPENAI_LOG_FORMAT', 'tensorboard')
OPENAI_LOG_FORMAT
が,参照する環境変数名になります.
後ろにくっついているtensorboard
は,OPENAI_LOG_FORMAT
が存在しない場合に,セットする値になります.
返り値はOPENAI_LOG_FORMAT
の値になります.
コレをもう少し書き加えると,こんな感じで,loggerの設定をすることができます.
# logger if args.tensorboard: # for tensorboard # logのformatを確認 if os.environ.get('OPENAI_LOG_FORMAT', 'tensorboard') != 'tensorboard': logger.warn( "Overwriting OPENAI_LOG_FORMAT to 'tensorboard', which was '{}'".format(os.environ['OPENAI_LOG_FORMAT'])) os.environ['OPENAI_LOG_FORMAT'] = 'tensorboard' # logを保存するpathを確認 if os.environ.get('OPENAI_LOGDIR', args.tensorboard) != args.tensorboard: logger.warn( "Overwriting OPENAI_LOGDIR to '{}', which was '{}'".format(args.tensorboard, os.environ['OPENAI_LOGDIR'])) os.environ['OPENAI_LOGDIR'] = args.tensorboard # launch tensorboard logger.warn('Launching Tensorboard...') tensorboard_pid = Popen(['tensorboard', '--logdir', args.tensorboard]).pid def kill_tb(): os.kill(tensorboard_pid, signal.SIGTERM) atexit.register(kill_tb) logger.configure(format_strs=['tensorboard', 'log'])