0Pricing
AI Agents · บทเรียน

ไฟล์ .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 ที่ครบถ้วนสำหรับโครงการเอเจนต์ใหม่:

  1. สร้าง .env พร้อมคีย์จริง (ห้ามบันทึกลงระบบควบคุมเวอร์ชัน)
  2. สร้าง .env.example พร้อมค่าตัวอย่างแทน (ให้บันทึกไฟล์นี้)
  3. เพิ่ม .env ลงใน .gitignore
  4. เพิ่ม load_dotenv() ไว้ด้านบนสุดของจุดเริ่มต้นการทำงาน
  5. ตรวจสอบตัวแปรที่จำเป็นเมื่อเริ่มต้น
  6. เพิ่ม 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวแปรสภาพแวดล้อมสำหรับตัวแทน
  2. ไฟล์ .env และ python-dotenv
  3. การหมุนเวียนข้อมูลลับและความปลอดภัย
  4. โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง
← กลับไปที่ AI Agents