Pythonで環境変数を取得する方法:os.environとos.getenvの使い分けと安全な設定管理

Webアプリケーションやスクリプトを作成する際、データベースのパスワードやAPIキーといった機密情報をソースコードに直接記述することは、セキュリティ上の大きなリスクとなります。

こうした情報は、OS側で管理される**「環境変数」**として保存し、プログラムの実行時に読み込む方法が推奨されます。

この記事では、Pythonの標準ライブラリである os モジュールを使用して、環境変数を取得する2つの基本的な方法と、それぞれの使い分けについて解説します。

目次

環境変数を取得する準備

Pythonで環境変数を扱うには、標準ライブラリの os モジュールをインポートします。

import os

os.environ というオブジェクトが、現在の環境変数を辞書(dict)のような形式で保持しています。

1. os.environ['KEY']:必須項目の取得

辞書のキー指定と同様に、[](ブラケット)を使って環境変数名(キー)を指定する方法です。

特徴: 指定した環境変数が存在しない場合、KeyError が発生してプログラムが停止します。

用途: 「データベースの接続パスワード」など、その値が設定されていなければプログラムが動作できない(必須の)環境変数を取得する場合に適しています。

import os

print("--- データベース接続処理 ---")

try:
    # 必須の環境変数 'DB_PASSWORD' を取得
    # 設定されていなければここでエラーが発生し、接続処理を中断できる
    db_pass = os.environ["DB_PASSWORD"]
    
    print(f"パスワードを取得しました: {db_pass}")
    print("データベースに接続します...")

except KeyError:
    print("エラー: 環境変数 'DB_PASSWORD' が設定されていません。")

実行結果(環境変数が設定されていない場合):

--- データベース接続処理 ---
エラー: 環境変数 'DB_PASSWORD' が設定されていません。

2. os.environ.get('KEY'):任意項目の取得

辞書の .get() メソッドと同様に取得する方法です(os.getenv() 関数も同様の動作をします)。

特徴: 指定した環境変数が存在しない場合、エラーにはならず None が返されます。また、第2引数にデフォルト値を指定することも可能です。

用途: 「デバッグモードの設定」など、設定されていなくてもプログラムが動作する(任意の)環境変数を取得する場合に適しています。

import os

# デバッグモードの設定を取得
# 環境変数 'DEBUG_MODE' がなければ、デフォルト値として 'False' を使用する
debug_setting = os.environ.get("DEBUG_MODE", "False")

print(f"デバッグモード設定値: {debug_setting}")

if debug_setting == "True":
    print("詳細なログを出力します(デバッグ中)")
else:
    print("標準ログのみ出力します(本番稼働中)")

実行結果(環境変数が未設定の場合):

デバッグモード設定値: False
標準ログのみ出力します(本番稼働中)

これにより、環境変数を設定し忘れても、安全なデフォルト値(この場合は False)でプログラムを動かし続けることができます。

まとめ

Pythonで環境変数を取得する際は、その変数の重要度に応じてメソッドを使い分けます。

  • os.environ['KEY']: 必須の変数。存在しない場合にエラー(KeyError)にして、プログラムを止めるために使用します。
  • os.environ.get('KEY', default): 任意の変数。存在しない場合にデフォルト値を適用し、プログラムを続行させるために使用します。

開発環境と本番環境で挙動を変えたり、セキュリティを確保したりするために、環境変数は非常に重要な仕組みです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次