【Python】envファイルの読み込みとdotenvの活用方法

【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やプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する