Pythonでenv環境変数を読み込む基本
Pythonで環境変数を扱う場合、標準ライブラリの「os」モジュールを使用することによって、簡単に環境変数の読み込みができます。環境変数はアプリケーションの設定や機密情報を外部から注入する手段として広く活用されています。
osモジュールのgetenv関数やenviron辞書を使用することで、システムの環境変数にアクセスできます。getenv関数はデフォルト値を指定できるため、環境変数が存在しない場合のフォールバック処理が容易に実装できます。
環境変数の値はすべて文字列として取得されるため、数値や真偽値として扱いたい場合は適切な型変換が必要です。この変換処理をラッパー関数として実装しておくと、コードの再利用性が高まります。
【サンプルコード】
import os
# 環境変数の読み込み方法1: os.getenv
database_url = os.getenv('DATABASE_URL', 'sqlite:///default.db')
# 環境変数の読み込み方法2: os.environ
api_key = os.environ.get('API_KEY', 'default_key')
# 型変換の例
debug_mode = os.getenv('DEBUG', 'False') == 'True'
port = int(os.getenv('PORT', '8000'))
print(f"Database URL: {database_url}")
print(f"API Key: {api_key}")
print(f"Debug Mode: {debug_mode}")
print(f"Port: {port}")
【実行結果】
Database URL: sqlite:///default.db
API Key: default_key
Debug Mode: False
Port: 8000
Pythonのdotenvを使用した.envファイルの読み込み
実際のプロジェクトでは、環境変数を.envファイルにまとめて管理することが一般的です。この方法を採用することによって、開発環境と本番環境で異なる設定を簡単に切り替えられるようになります。
python-dotenvライブラリを使用すると、.envファイルから環境変数を読み込むことができます。このライブラリはpipコマンドでインストールでき、load_dotenv関数を使って.envファイルの内容をシステムの環境変数として読み込みます。
複数の.envファイルを使い分けたい場合は、dotenv_path引数に読み込むファイルのパスを指定できます。これにより、開発・テスト・本番などの環境ごとに設定ファイルを分離できます。
【サンプルコード】
# pip install python-dotenv でライブラリをインストール
from dotenv import load_dotenv
import os
# .envファイルを読み込む
load_dotenv()
# 特定のパスの.envファイルを読み込む場合
# load_dotenv(dotenv_path='.env.development')
# 環境変数を取得
database_url = os.getenv('DATABASE_URL')
secret_key = os.getenv('SECRET_KEY')
print(f"Database URL: {database_url}")
print(f"Secret Key: {secret_key}")
【実行結果】
Database URL: postgresql://user:password@localhost/mydatabase
Secret Key: my_super_secret_key
Pythonでenv環境変数を動的に設定・変更する方法
プログラム実行中に環境変数を動的に設定または変更したい場合があります。Pythonではos.environを使用することによって、実行時に環境変数を操作できます。
os.environ辞書に新しいキーと値を追加することで環境変数を設定できます。この変更はPythonプロセス内でのみ有効であり、システム全体や親プロセスには影響しません。
環境変数の変更は子プロセスに継承されるため、Pythonスクリプトから外部コマンドを実行する場合に役立ちます。この特性を利用して、外部プログラムの動作を制御できます。
【サンプルコード】
import os
import subprocess
# 現在の環境変数を確認
print("現在のPATH環境変数:", os.getenv('PATH'))
# 新しい環境変数を設定
os.environ['CUSTOM_SETTING'] = 'my_value'
print("設定した環境変数:", os.environ['CUSTOM_SETTING'])
# 既存の環境変数を変更
original_path = os.environ['PATH']
os.environ['PATH'] = original_path + ':/new/path'
print("変更後のPATH環境変数:", os.environ['PATH'])
# 環境変数の削除
os.environ['TEMP_VAR'] = 'delete_me'
print("削除前:", os.environ.get('TEMP_VAR'))
del os.environ['TEMP_VAR']
print("削除後:", os.environ.get('TEMP_VAR'))
【実行結果】
現在のPATH環境変数: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
設定した環境変数: my_value
変更後のPATH環境変数: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/new/path
削除前: delete_me
削除後: None
Pythonのenvファイル読み込みにおけるセキュリティ対策
環境変数やenvファイルには機密情報が含まれることが多いため、適切なセキュリティ対策が必要です。環境変数にAPIキーやデータベース認証情報などの機密データを保存する場合、これらの情報がソースコードに直接記述されることを防ぎます。
.envファイルはバージョン管理システムから除外するためにgitignoreに追加することが重要です。代わりに.env.exampleなどのサンプルファイルをリポジトリに含めて、必要な環境変数の種類と形式を示すことができます。
python-dotenvには、環境変数の値を検証するための機能も提供されています。これにより、必須の環境変数が設定されているかをチェックし、アプリケーションの起動前に問題を検出できます。
【サンプルコード】
from dotenv import load_dotenv
import os
import sys
# .envファイルを読み込む
if not load_dotenv():
print("警告: .envファイルが見つかりませんでした")
# 必須環境変数の検証
required_vars = ['DATABASE_URL', 'SECRET_KEY', 'API_KEY']
missing_vars = []
for var in required_vars:
if var not in os.environ:
missing_vars.append(var)
if missing_vars:
print(f"エラー: 以下の必須環境変数が設定されていません: {', '.join(missing_vars)}")
sys.exit(1)
# 安全に環境変数を表示(完全な値を表示しない)
def safe_display(value, show_chars=4):
if not value:
return "未設定"
if len(value) <= show_chars * 2:
return "*" * len(value)
return value[:show_chars] + "..." + value[-show_chars:]
print(f"Database URL: {safe_display(os.getenv('DATABASE_URL'))}")
print(f"Secret Key: {safe_display(os.getenv('SECRET_KEY'))}")
print(f"API Key: {safe_display(os.getenv('API_KEY'))}")
【実行結果】
Database URL: post...base
Secret Key: my_s...t_key
API Key: 1234...5678※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
Gitでブランチ(branch)を作成する方法
crontabの書き方
PDFをExcelに変換する方法
Excelでプルダウンを設定する方法
エクセルでページ区切りを設定する方法
Markdownの取り消し線の書き方
ラズベリーパイでできること9選
Gitでbranch(ブランチ)を削除する方法をローカル・リモート別に解説
git addの取り消し方法を状況別に解説
CSSのstickyプロパティでWebサイトに固定要素を実装する方法
ITやプログラミングに関するニュース
アイアール技術者教育研究所がエクセルギー解析計算ウェビナーを開催、省エネと環境負荷低減に貢献
フラー株式会社がアプリ市場トレンド解説ウェビナーを3月25日に開催、成長アプリの共通項とデータ活用を解説
株式会社BOTANICOが2026年版X運用最新戦略ウェビナーを開催、成果につなげる資産型運用を解説
AIストーム株式会社がOpenClaw活用セミナーを開催、AIエージェントがビジネス現場を変革
株式会社オロが建設コンサルティング業向けウェビナーを開催、技術部門の損益可視化を支援
アルティウスリンク株式会社が経理向けBPO活用ウェビナーを開催、課題解決と業務効率化を支援
株式会社日本計画研究所がAI時代のインフラセミナー開催、GPUとデータセンターの課題を解説
株式会社カウンターワークスがリーシング業務AI活用ウェビナー開催、既存ツールでAIエージェント実践
株式会社セキドがDJI産業機セミナーを福井で開催、3Dデータ活用と機材選定を無料解説
株式会社ナビットが補助金活用ウェビナーを開催、販促費削減と集客力向上を解説
