
【Python】envファイルの読み込みとdotenvの活用方法
公開: 更新:Pythonで環境変数を読み込む基本
Pythonで環境変数を扱う場合、標準ライブラリの「os」モジュールを使用することで環境変数の読み込みが可能です。環境変数はアプリケーションの設定や機密情報を外部から注入する手段として利用されます。
osモジュールのgetenv関数やenviron辞書を使用することで、システムの環境変数にアクセスできます。getenv関数ではデフォルト値を指定できるため、環境変数が存在しない場合のフォールバック処理が実装できます。
import os
database_url = os.getenv('DATABASE_URL', 'sqlite:///default.db')
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
行番号 | 詳細説明 |
---|---|
1行目 | osモジュールをインポート |
3行目 | os.getenvでDATABASE_URL環境変数を取得し、存在しない場合はデフォルト値を使用 |
4行目 | os.environ.getでAPI_KEY環境変数を取得し、存在しない場合はデフォルト値を使用 |
5行目 | DEBUG環境変数を文字列からブール値に変換 |
6行目 | PORT環境変数を文字列から整数に変換 |
8行目 | 取得したDATABASE_URLの値を表示 |
9行目 | 取得したAPI_KEYの値を表示 |
10行目 | 取得したDEBUGの値を表示 |
11行目 | 取得したPORTの値を表示 |
【PR】『Python』を学べる企業・個人向けのプログラミングコース
Pythonのdotenvを使用した.envファイルの読み込み方法
実際のプロジェクトでは、環境変数を.envファイルにまとめて管理することが一般的です。この方法を採用することで、開発環境と本番環境で異なる設定を切り替えられます。
python-dotenvライブラリを使用すると、.envファイルから環境変数を読み込むことが可能です。このライブラリはpipコマンドでインストールでき、load_dotenv関数を使って.envファイルの内容をシステムの環境変数として読み込みます。
from dotenv import load_dotenv
import os
load_dotenv()
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
行番号 | 詳細説明 |
---|---|
1行目 | dotenvモジュールからload_dotenv関数をインポート |
2行目 | osモジュールをインポート |
4行目 | load_dotenv関数で.envファイルを読み込み環境変数に設定 |
6行目 | 読み込んだDATABASE_URL環境変数をos.getenvで取得 |
7行目 | 読み込んだSECRET_KEY環境変数をos.getenvで取得 |
9行目 | 取得したDATABASE_URLの値を表示 |
10行目 | 取得したSECRET_KEYの値を表示 |
envファイル読み込み時のセキュリティ対策
環境変数や.envファイルには機密情報が含まれることが多いため、適切なセキュリティ対策が必要です。環境変数にAPIキーやデータベース認証情報などの機密データを保存する場合、これらの情報がソースコードに直接記述されることを防ぎます。
.envファイルはバージョン管理システムから除外するためにgitignoreに追加することが重要です。代わりに.env.exampleなどのサンプルファイルをリポジトリに含め、必要な環境変数の種類と形式を示すことができます。
from dotenv import load_dotenv
import os
import sys
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
行番号 | 詳細説明 |
---|---|
1行目 | dotenvモジュールからload_dotenv関数をインポート |
2行目 | osモジュールをインポート |
3行目 | sysモジュールをインポート |
5-6行目 | .envファイルが読み込めなかった場合に警告を表示 |
8行目 | 必須の環境変数リストを定義 |
9行目 | 不足している環境変数を格納するリストを初期化 |
11-13行目 | 必須環境変数が設定されているかを確認し、不足しているものをリストに追加 |
15-17行目 | 不足している環境変数がある場合はエラーメッセージを表示してプログラムを終了 |
19-24行目 | 環境変数の値を安全に表示するための関数を定義(一部を隠す) |
26行目 | 安全な表示方法でDATABASE_URLの値を出力 |
27行目 | 安全な表示方法でSECRET_KEYの値を出力 |
28行目 | 安全な表示方法でAPI_KEYの値を出力 |
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
- 【Python】画像認識で個数カウントをする方法
- 【Python】在庫管理システムを自作する方法
- 【Python】ChatGPTでコード生成をするプロンプトの作り方
- 【Python】pipenvでバージョン変更を行う方法
- Pythonを使ったAndroidアプリの作り方(開発方法)