File .env dan python-dotenv
Muat file .env, aturan .gitignore, dan praktik terbaik dotenv.
File .env dan python-dotenv adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Masalah dengan Ekspor Shell
Menetapkan variabel lingkungan dengan export di terminal memang berfungsi, tetapi Anda harus menetapkannya kembali setiap kali membuka sesi terminal baru. Mengelola banyak variabel dengan cara ini rentan terhadap kesalahan dan sulit dibagikan kepada rekan satu tim.
Berkas .env mengatasi masalah ini dengan menyimpan semua variabel proyek dalam satu berkas yang dimuat secara otomatis.
Format Berkas .env
Berkas .env berisi pasangan KEY=VALUE, satu pasangan per baris. Baris yang diawali # adalah komentar. Nilai dapat diberi tanda kutip secara opsional. Format sederhana ini dipahami oleh puluhan alat dan kerangka kerja.
# .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=developmentMemuat .env dengan python-dotenv
Pasang python-dotenv dengan pip install python-dotenv. Panggil load_dotenv() di bagian paling awal titik masuk Anda, sebelum membaca os.environ. Perintah tersebut memuat berkas .env dan mengisi lingkungan.
# 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}')Opsi load_dotenv()
load_dotenv() memiliki beberapa opsi yang berguna: dotenv_path= untuk menentukan jalur khusus, override=True untuk menimpa variabel lingkungan yang sudah ada (secara bawaan, variabel tersebut dilewati), dan verbose=True untuk mencatat berkas yang dimuat.
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() untuk Kamus Konfigurasi Eksplisit
dotenv_values() mengembalikan isi berkas .env sebagai kamus Python tanpa mengubah lingkungan. Ini berguna ketika Anda ingin memeriksa atau menggunakan konfigurasi tanpa mengotori lingkungan proses.
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 pipelineBerkas .env.example
Buat berkas .env.example yang mendokumentasikan semua variabel yang diperlukan dengan nilai pengganti. Berkas ini IS dikomit ke git—berkas ini berfungsi sebagai dokumentasi bagi rekan satu tim dan pengembang baru mengenai hal-hal yang perlu dikonfigurasi.
# .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/agentdbMenambahkan .env ke .gitignore
Berkas .env harus NEVER dikomit ke git. Tambahkan berkas tersebut ke .gitignore segera setelah membuat proyek. Pastikan berkas tersebut diabaikan sebelum komit pertama Anda.
# .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' >> .gitignoreKait Pra-Komit untuk Memblokir Komit .env
Tambahkan kait pra-komit yang memblokir komit apa pun yang berisi berkas .env. Ini menyediakan lapisan pengaman otomatis jika seseorang lupa memeriksa .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 0Memuat .env dalam Berbagai Kerangka Kerja
Banyak kerangka kerja memuat berkas .env secara otomatis. FastAPI (melalui pydantic-settings), Django (melalui django-environ), dan Docker Compose semuanya mendukung .env secara bawaan. Dengan memahami pola ini, Anda dapat menghindari pemuatan ganda.
# 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 agentsBeberapa Berkas .env untuk Berbagai Lingkungan
Gunakan berkas .env terpisah untuk lingkungan yang berbeda: .env.development, .env.staging, .env.production. Muat berkas yang benar berdasarkan variabel 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)Daftar Periksa Penyiapan Lengkap
Daftar periksa penyiapan .env lengkap untuk proyek agen baru:
- Buat
.envdengan kunci nyata (jangan pernah mengomitnya) - Buat
.env.exampledengan nilai pengganti (berkas ini dikomit) - Tambahkan
.envke.gitignore - Tambahkan
load_dotenv()di bagian awal titik masuk Anda - Validasi variabel yang diperlukan saat mulai
- Tambahkan
cp .env.example .envke petunjuk penyiapan di README
Uji Pemahaman: Berkas .env dan python-dotenv
Uji pemahaman Anda tentang berkas .env dan pustaka python-dotenv.
Ringkasan: Berkas .env dan python-dotenv
Sekarang Anda memiliki alur kerja .env lengkap untuk proyek agen:
- Buat berkas
.envdengan nilai nyata—jangan pernah mengomitnya - Buat
.env.exampledengan nilai pengganti—selalu komit berkas ini - Tambahkan
.env*(kecuali .env.example) ke.gitignore - Panggil
load_dotenv()di bagian paling awal titik masuk Anda - Gunakan
dotenv_values()untuk mengakses kamus tanpa menyentuh os.environ - Gunakan berkas terpisah untuk setiap lingkungan (
.env.staging,.env.production)
Alur kerja ini menjaga rahasia tetap berada di luar git sekaligus memudahkan pengembangan lokal.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “File .env dan python-dotenv” gratis?
Ya — teks lengkap “File .env dan python-dotenv” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “File .env dan python-dotenv”?
Muat file .env, aturan .gitignore, dan praktik terbaik dotenv. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “File .env dan python-dotenv” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Variabel Lingkungan untuk Agen
- File .env dan python-dotenv
- Rotasi Rahasia dan Keamanan
- Profil Konfigurasi untuk Pengembangan dan Produksi