ไฟล์ .env และ python-dotenv
โหลดไฟล์ .env กฎ .gitignore และแนวปฏิบัติที่ดีของ dotenv
ไฟล์ .env และ python-dotenv เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาของการส่งออกตัวแปรจากเชลล์
การกำหนดตัวแปรสภาพแวดล้อมด้วย export ในเชลล์ใช้งานได้ แต่คุณต้องกำหนดตัวแปรเหล่านี้ใหม่ในทุกเซสชันเทอร์มินัลที่เปิดขึ้น การจัดการตัวแปรจำนวนมากด้วยวิธีนี้มีโอกาสผิดพลาดได้ง่ายและไม่สะดวกต่อการแบ่งปันกับเพื่อนร่วมทีม
ไฟล์ .env แก้ปัญหานี้ด้วยการจัดเก็บตัวแปรทั้งหมดของโครงการไว้ในไฟล์เดียว ซึ่งจะถูกโหลดโดยอัตโนมัติ
รูปแบบไฟล์ .env
ไฟล์ .env ประกอบด้วยคู่ 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=developmentการโหลด .env ด้วย python-dotenv
ติดตั้ง python-dotenv ด้วย pip install python-dotenv เรียกใช้ load_dotenv() ที่ด้านบนสุดของจุดเริ่มต้นการทำงาน ก่อนอ่านค่าใด ๆ จาก os.environ ฟังก์ชันนี้จะโหลดไฟล์ .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 เพื่อระบุตัวแปรที่จำเป็นทั้งหมดพร้อมค่าตัวอย่างแทน ไฟล์นี้ IS ถูกบันทึกลงในระบบควบคุมเวอร์ชัน โดยทำหน้าที่เป็นเอกสารให้เพื่อนร่วมทีมและผู้พัฒนาคนใหม่ทราบว่าต้องกำหนดค่าอะไรบ้าง
# .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 ต้อง NEVER ถูกบันทึกลงในระบบควบคุมเวอร์ชัน เพิ่มไฟล์นี้ลงใน .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
เพิ่มฮุกก่อนบันทึกที่บล็อกการบันทึกใด ๆ ซึ่งมีไฟล์ .env วิธีนี้เป็นกลไกป้องกันอัตโนมัติในกรณีที่มีผู้ลืมตรวจสอบ .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()ไว้ด้านบนสุดของจุดเริ่มต้นการทำงาน - ตรวจสอบตัวแปรที่จำเป็นเมื่อเริ่มต้น
- เพิ่ม
cp .env.example .envลงในคำแนะนำการตั้งค่าใน README
ตรวจสอบความรู้: ไฟล์ .env และ python-dotenv
ทดสอบความเข้าใจเกี่ยวกับไฟล์ .env และไลบรารี python-dotenv ของคุณ
สรุปทบทวน: ไฟล์ .env และ python-dotenv
ขณะนี้คุณมีขั้นตอนการทำงานของ .env สำหรับโครงการเอเจนต์อย่างครบถ้วนแล้ว:
- สร้างไฟล์
.envพร้อมค่าจริง — ห้ามบันทึกไฟล์นี้ - สร้าง
.env.exampleพร้อมค่าตัวอย่างแทน — ให้บันทึกไฟล์นี้เสมอ - เพิ่ม
.env*(ยกเว้น .env.example) ลงใน.gitignore - เรียกใช้
load_dotenv()ที่ด้านบนสุดของจุดเริ่มต้นการทำงาน - ใช้
dotenv_values()เพื่อเข้าถึงพจนานุกรมโดยไม่แตะต้อง os.environ - ใช้ไฟล์แยกกันสำหรับแต่ละสภาพแวดล้อม (
.env.staging,.env.production)
ขั้นตอนการทำงานนี้ช่วยเก็บข้อมูลลับให้ห่างจากระบบควบคุมเวอร์ชัน พร้อมทำให้การพัฒนาในเครื่องทำได้ง่าย
คำถามที่พบบ่อย
บทเรียน “ไฟล์ .env และ python-dotenv” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ไฟล์ .env และ python-dotenv” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ไฟล์ .env และ python-dotenv”
โหลดไฟล์ .env กฎ .gitignore และแนวปฏิบัติที่ดีของ dotenv คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ไฟล์ .env และ python-dotenv” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวแปรสภาพแวดล้อมสำหรับตัวแทน
- ไฟล์ .env และ python-dotenv
- การหมุนเวียนข้อมูลลับและความปลอดภัย
- โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง