.env-bestanden en python-dotenv
.env-bestanden laden, .gitignore-regels toepassen en best practices voor dotenv.
.env-bestanden en python-dotenv is een gratis AI-agenten-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agenten. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agenten bevat in totaal 4 lessen.
Het probleem met shell-exporten
Omgevingsvariabelen instellen met export in de shell werkt, maar je moet ze in elke nieuwe terminalsessie opnieuw instellen. Op deze manier veel variabelen beheren is foutgevoelig en niet eenvoudig te delen met teamgenoten.
.env-bestanden lossen dit op door alle projectvariabelen op te slaan in één bestand dat automatisch wordt geladen.
De indeling van het .env-bestand
Een .env-bestand bevat KEY=VALUE-paren, één per regel. Regels die met # beginnen, zijn opmerkingen. Waarden mogen eventueel tussen aanhalingstekens staan. Deze eenvoudige indeling wordt door tientallen hulpmiddelen en frameworks begrepen.
# .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 laden met python-dotenv
Installeer python-dotenv met pip install python-dotenv. Roep load_dotenv() helemaal bovenaan het startpunt van je programma aan, voordat je os.environ uitleest. Hiermee wordt het .env-bestand geladen en worden de omgevingsvariabelen gevuld.
# 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}')Opties voor load_dotenv()
load_dotenv() heeft verschillende handige opties: dotenv_path= om een aangepast pad op te geven, override=True om bestaande omgevingsvariabelen te overschrijven (standaard worden ze overgeslagen) en verbose=True om te melden welk bestand is geladen.
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() voor expliciete configuratiewoordenboeken
dotenv_values() retourneert de inhoud van het .env-bestand als een Python-woordenboek zonder de omgeving te wijzigen. Dit is handig wanneer je configuratie wilt inspecteren of gebruiken zonder de procesomgeving te vervuilen.
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 pipelineHet .env.example-bestand
Maak een .env.example-bestand waarin je alle vereiste variabelen met voorbeeldwaarden documenteert. Dit bestand wordt WEL in git opgenomen — het dient als documentatie voor teamgenoten en nieuwe ontwikkelaars over wat ze moeten configureren.
# .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 toevoegen aan .gitignore
Het .env-bestand mag NOOIT in git worden opgenomen. Voeg het onmiddellijk aan .gitignore toe wanneer je je project maakt. Controleer vóór je eerste commit of het bestand wordt genegeerd.
# .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' >> .gitignorePre-commit-hook om .env-commits te blokkeren
Voeg een pre-commit-hook toe die elke commit blokkeert waarin een .env-bestand staat. Dit biedt een automatisch vangnet voor het geval iemand vergeet .gitignore te controleren.
# .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 laden in verschillende frameworks
Veel frameworks laden .env-bestanden automatisch. FastAPI (via pydantic-settings), Django (via django-environ) en Docker Compose ondersteunen .env standaard. Als je deze patronen kent, voorkom je dat het bestand dubbel wordt geladen.
# 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 agentsMeerdere .env-bestanden voor verschillende omgevingen
Gebruik afzonderlijke .env-bestanden voor verschillende omgevingen: .env.development, .env.staging, .env.production. Laad het juiste bestand op basis van de variabele 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)Volledige configuratiecontrolelijst
Een volledige controlelijst voor het instellen van .env in een nieuw agentproject:
- Maak
.envmet echte sleutels (neem het bestand nooit op) - Maak
.env.examplemet voorbeeldwaarden (neem dit bestand wel op) - Voeg
.envtoe aan.gitignore - Voeg
load_dotenv()bovenaan je startpunt toe - Valideer vereiste variabelen bij het opstarten
- Voeg
cp .env.example .envtoe aan de installatie-instructies van je README
Kennistoets: .env-bestanden en python-dotenv
Toets je begrip van .env-bestanden en de python-dotenv-bibliotheek.
Samenvatting: .env-bestanden en python-dotenv
Je beschikt nu over een volledige .env-werkwijze voor agentprojecten:
- Maak een
.env-bestand met echte waarden — neem het nooit op - Maak
.env.examplemet voorbeeldwaarden — neem het altijd op - Voeg
.env*(behalve .env.example) toe aan.gitignore - Roep
load_dotenv()helemaal bovenaan je startpunt aan - Gebruik
dotenv_values()voor toegang als woordenboek zonder os.environ aan te raken - Gebruik afzonderlijke bestanden per omgeving (
.env.staging,.env.production)
Deze werkwijze houdt geheimen buiten Git en maakt lokale ontwikkeling eenvoudig.
Leer AI-agenten met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 60
- Lessen
- 239
Veelgestelde vragen
Is de les “.env-bestanden en python-dotenv” gratis?
Ja — de volledige tekst van “.env-bestanden en python-dotenv” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agenten wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agenten bevat in totaal 4 lessen.
Wat leer ik in “.env-bestanden en python-dotenv”?
.env-bestanden laden, .gitignore-regels toepassen en best practices voor dotenv. Je oefent met AI-agenten door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met AI-agenten te beginnen?
Ervaring vooraf is niet nodig. AI-agenten op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “.env-bestanden en python-dotenv”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over AI-agenten?
Ja. Elke les over AI-agenten bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Omgevingsvariabelen voor agents
- .env-bestanden en python-dotenv
- Secrets roteren en beveiligen
- Configuratieprofielen voor development en productie