.envファイルとpython-dotenv
.envファイルの読み込み、.gitignoreのルール、dotenvのベストプラクティスを学びます。
「.envファイルとpython-dotenv」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
シェルでのexportの問題
シェルでexportを使って環境変数を設定する方法は動作しますが、新しいターミナルセッションを開くたびに再設定が必要です。この方法で多くの変数を管理するのはエラーが起こりやすく、チームメンバーと共有することもできません。
.envファイルを使えば、プロジェクトのすべての変数を自動的に読み込まれる1つのファイルに保存でき、この問題を解決できます。
.envファイルの形式
.envファイルには、1行につき1つのKEY=VALUE形式の組が含まれます。#で始まる行はコメントです。値は任意で引用符で囲めます。この単純な形式は、数十種類のツールやフレームワークで利用できます。
# .env file (NEVER commit this file to git)
# Required API keys
OPENAI_API_KEY=sk-proj-your-real-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here
# Optional settings with defaults
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=DEBUG
# Database (optional — disables memory storage if not set)
# DATABASE_URL=postgresql://user:pass@localhost/agentdb
# Environment identifier
ENV=developmentpython-dotenvで.envを読み込む
pip install python-dotenvでpython-dotenvをインストールします。エントリーポイントの最上部で、os.environを読み取る前にload_dotenv()を呼び出します。これにより.envファイルが読み込まれ、環境変数が設定されます。
# pip install python-dotenv
from dotenv import load_dotenv
import os
# Load .env file — call this BEFORE reading any env vars
load_dotenv()
# Now all variables from .env are available via os.environ
openai_key = os.environ['OPENAI_API_KEY']
model = os.getenv('AGENT_MODEL', 'gpt-4o-mini')
max_steps = int(os.getenv('AGENT_MAX_STEPS', '20'))
print(f'Model: {model}, Max steps: {max_steps}')load_dotenv()のオプション
load_dotenv()には便利なオプションがいくつかあります。dotenv_path=はカスタムパスを指定し、override=Trueは既存の環境変数を上書きします(デフォルトでは既存の変数をスキップします)。verbose=Trueを使うと、読み込まれたファイルをログに記録できます。
from dotenv import load_dotenv
import os
# Load from a specific path
load_dotenv(dotenv_path='/path/to/custom/.env')
# Override existing environment variables
# (by default, existing vars are NOT overridden)
load_dotenv(override=True)
# Load a specific environment file
env_file = os.getenv('ENV_FILE', '.env')
load_dotenv(dotenv_path=env_file, verbose=True)
# Find .env automatically (searches up the directory tree)
from dotenv import find_dotenv
load_dotenv(find_dotenv())明示的な設定辞書にdotenv_values()を使用する
dotenv_values()は、環境を変更せずに.envファイルの内容をPythonの辞書として返します。プロセスの環境を汚染せずに設定を確認または使用したい場合に便利です。
from dotenv import dotenv_values
# Read .env into a dict without touching os.environ
config = dotenv_values('.env')
print(config.get('AGENT_MODEL')) # 'gpt-4o-mini'
print(config.get('LOG_LEVEL')) # 'DEBUG'
# Merge .env with actual environment (env vars take priority)
import os
combined = {**dotenv_values('.env'), **os.environ}
# This means actual environment variables override .env values
# Useful for CI where env vars are injected by the pipeline.env.exampleファイル
プレースホルダー値を使って、必要な変数をすべて記載した.env.exampleファイルを作成します。このファイルはgitにコミットします。チームメンバーや新しい開発者に、何を設定すべきかを伝えるドキュメントとして機能します。
# .env.example — commit this file to git
# Copy to .env and fill in real values:
# cp .env.example .env
# Required API keys (get from respective providers)
OPENAI_API_KEY=sk-proj-your-openai-key-here
SEARCH_API_KEY=tvly-your-tavily-key-here
# Optional settings
AGENT_MODEL=gpt-4o-mini
AGENT_MAX_STEPS=20
LOG_LEVEL=INFO
ENV=development
# Database (optional)
# DATABASE_URL=postgresql://user:password@localhost:5432/agentdb.envを.gitignoreに追加する
.envファイルをgitにコミットしてはいけません。プロジェクトを作成したらすぐに.gitignoreへ追加します。最初のコミット前に、無視されていることを確認してください。
# .gitignore — add these lines
# Environment files with real secrets
.env
.env.local
.env.production
.env.staging
# But DO commit these:
# .env.example (placeholder values, safe to share)
# Verify .env is ignored before committing:
# git check-ignore -v .env
# .gitignore:1:.env .env <-- means it IS ignored (good)
# If .env was already tracked:
# git rm --cached .env
# git commit -m 'Remove .env from tracking'
# echo '.env' >> .gitignore.envのコミットを防ぐpre-commitフック
.envファイルを含むコミットをブロックするpre-commitフックを追加します。これにより、誰かが.gitignoreの確認を忘れた場合にも、自動的な安全策が働きます。
# .git/hooks/pre-commit (make executable: chmod +x .git/hooks/pre-commit)
#!/bin/sh
# Block commits that include .env files with real content
if git diff --cached --name-only | grep -qE '^\.env$';
then
echo 'ERROR: .env file is staged for commit!'
echo 'This file contains secrets and must NOT be committed.'
echo 'Run: git reset HEAD .env'
exit 1
fi
# Also check for common secret patterns in any staged file
if git diff --cached | grep -qE '(sk-proj-|tvly-|xai-)';
then
echo 'WARNING: Possible API key detected in staged changes!'
echo 'Review carefully before committing.'
fi
exit 0各種フレームワークで.envを読み込む
多くのフレームワークでは、.envファイルが自動的に読み込まれます。FastAPI(pydantic-settings経由)、Django(django-environ経由)、Docker Composeはいずれも.envをネイティブにサポートしています。こうしたパターンを理解しておくと、重複した読み込みを避けられます。
# FastAPI with pydantic-settings (auto-loads .env):
# pip install pydantic-settings
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
openai_api_key: str
agent_model: str = 'gpt-4o-mini'
log_level: str = 'INFO'
class Config:
env_file = '.env'
# settings = Settings() # auto-reads .env and validates types
# print(settings.agent_model) # 'gpt-4o-mini'
# FastAPI is also fine with plain load_dotenv() at the top of main.py
# No need to use pydantic-settings for simple agents環境ごとに複数の.envファイルを使う
環境ごとに別の.envファイルを使用します。.env.development、.env.staging、.env.productionなどです。ENV変数に基づいて、正しいファイルを読み込みます。
import os
from dotenv import load_dotenv
# Determine which environment to load
env = os.getenv('ENV', 'development')
# Try environment-specific file first, fall back to base .env
env_file = f'.env.{env}'
if os.path.exists(env_file):
load_dotenv(env_file)
print(f'Loaded {env_file}')
else:
load_dotenv('.env')
print('Loaded .env')
# Usage:
# ENV=staging python agent.py -> loads .env.staging
# ENV=production python agent.py -> loads .env.production
# python agent.py -> loads .env (default development)セットアップ完全チェックリスト
新しいエージェントプロジェクトの.envセットアップ完全チェックリスト:
- 実際のキーを含む
.envを作成します(決してコミットしません) - プレースホルダーを含む
.env.exampleを作成します(こちらはコミットします) .envを.gitignoreに追加します- エントリーポイントの先頭に
load_dotenv()を追加します - 起動時に必須の変数を検証します
- READMEのセットアップ手順に
cp .env.example .envを追加します
理解度チェック:.envファイルとpython-dotenv
.envファイルとpython-dotenvライブラリについての理解度を確認します。
まとめ:.envファイルとpython-dotenv
これで、エージェントプロジェクト用の.envワークフローが完成しました:
- 実際の値を含む
.envファイルを作成します。決してコミットしません - プレースホルダーを含む
.env.exampleを作成します。必ずコミットします - .env.exampleを除く
.env*を.gitignoreに追加します - エントリーポイントの最上部で
load_dotenv()を呼び出します dotenv_values()を使い、os.environに触れずに辞書としてアクセスします- 環境ごとに別のファイルを使用します(
.env.staging、.env.production)
このワークフローにより、シークレットをgitから除外しながら、ローカル開発を簡単に進められます。
よくある質問
「.envファイルとpython-dotenv」レッスンは無料ですか?
はい。「.envファイルとpython-dotenv」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「.envファイルとpython-dotenv」で何を学びますか?
.envファイルの読み込み、.gitignoreのルール、dotenvのベストプラクティスを学びます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「.envファイルとpython-dotenv」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エージェント向け環境変数
- .envファイルとpython-dotenv
- 秘密情報のローテーションとセキュリティ
- 開発環境と本番環境の設定プロファイル