0Pricing
AI Agents · Pelajaran

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=development

Memuat .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 pipeline

Berkas .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/agentdb

Menambahkan .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' >> .gitignore

Kait 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 0

Memuat .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 agents

Beberapa 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:

  1. Buat .env dengan kunci nyata (jangan pernah mengomitnya)
  2. Buat .env.example dengan nilai pengganti (berkas ini dikomit)
  3. Tambahkan .env ke .gitignore
  4. Tambahkan load_dotenv() di bagian awal titik masuk Anda
  5. Validasi variabel yang diperlukan saat mulai
  6. Tambahkan cp .env.example .env ke 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 .env dengan nilai nyata—jangan pernah mengomitnya
  • Buat .env.example dengan 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

  1. Variabel Lingkungan untuk Agen
  2. File .env dan python-dotenv
  3. Rotasi Rahasia dan Keamanan
  4. Profil Konfigurasi untuk Pengembangan dan Produksi
← Kembali ke AI Agents