File .env e python-dotenv
Caricamento dei file .env, regole di .gitignore e best practice per dotenv
File .env e python-dotenv è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Il problema delle esportazioni nella shell
Impostare le variabili d'ambiente con export nella shell funziona, ma richiede di reimpostarle in ogni nuova sessione del terminale. Gestire molte variabili in questo modo è soggetto a errori e non consente di condividerle con i colleghi.
I file .env risolvono questo problema memorizzando tutte le variabili del progetto in un unico file che viene caricato automaticamente.
Il formato del file .env
Un file .env contiene coppie KEY=VALUE, una per riga. Le righe che iniziano con # sono commenti. I valori possono essere racchiusi facoltativamente tra virgolette. Questo semplice formato è supportato da decine di strumenti e framework.
# .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=developmentCaricare .env con python-dotenv
Installi python-dotenv con pip install python-dotenv. Chiami load_dotenv() all'inizio del punto di ingresso, prima di qualsiasi lettura di os.environ. La funzione carica il file .env e popola l'ambiente.
# 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}')Opzioni di load_dotenv()
load_dotenv() offre diverse opzioni utili: dotenv_path= per specificare un percorso personalizzato, override=True per sovrascrivere le variabili d'ambiente esistenti (per impostazione predefinita vengono ignorate) e verbose=True per registrare nei log quale file è stato caricato.
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() per dizionari di configurazione espliciti
dotenv_values() restituisce il contenuto del file .env come dizionario Python senza modificare l'ambiente. È utile quando desidera ispezionare o utilizzare la configurazione senza alterare l'ambiente del processo.
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 pipelineIl file .env.example
Crei un file .env.example che documenti tutte le variabili obbligatorie con valori segnaposto. Questo file DEVE essere inserito in Git: serve come documentazione per i colleghi e per i nuovi sviluppatori su ciò che occorre configurare.
# .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/agentdbAggiungere .env a .gitignore
Il file .env non deve MAI essere inserito in Git. Lo aggiunga a .gitignore subito dopo aver creato il progetto. Verifichi che sia ignorato prima del primo commit.
# .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' >> .gitignoreHook pre-commit per bloccare i commit di .env
Aggiunga un hook pre-commit che blocchi qualsiasi commit contenente un file .env. In questo modo dispone di una protezione automatica nel caso qualcuno dimentichi di controllare .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 0Caricare .env in framework diversi
Molti framework caricano automaticamente i file .env. FastAPI (tramite pydantic-settings), Django (tramite django-environ) e Docker Compose supportano nativamente .env. Conoscere questi schemi evita caricamenti duplicati.
# 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 agentsPiù file .env per gli ambienti
Utilizzi file .env separati per ambienti diversi: .env.development, .env.staging, .env.production. Carichi quello corretto in base alla variabile 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)Checklist completa della configurazione
Checklist completa per configurare .env in un nuovo progetto di agente:
- Crei
.envcon le chiavi reali (non lo inserisca mai nel repository) - Crei
.env.examplecon valori segnaposto (questo file va inserito nel repository) - Aggiunga
.enva.gitignore - Aggiunga
load_dotenv()all'inizio del punto di ingresso - Convalidi le variabili obbligatorie all'avvio
- Aggiunga
cp .env.example .envalle istruzioni di configurazione del README
Verifica delle conoscenze: file .env e python-dotenv
Verifichi la comprensione dei file .env e della libreria python-dotenv.
Riepilogo: file .env e python-dotenv
Ora dispone di un workflow .env completo per i progetti di agenti:
- Crei un file
.envcon i valori reali: non lo inserisca mai nel repository - Crei
.env.examplecon valori segnaposto: lo inserisca sempre nel repository - Aggiunga
.env*(tranne .env.example) a.gitignore - Chiami
load_dotenv()all'inizio del punto di ingresso - Utilizzi
dotenv_values()per accedere al dizionario senza modificare os.environ - Utilizzi file separati per ogni ambiente (
.env.staging,.env.production)
Questo workflow mantiene i segreti fuori da Git e al contempo semplifica lo sviluppo locale.
Domande Frequenti
La lezione «File .env e python-dotenv» è gratuita?
Sì — il testo completo di «File .env e python-dotenv» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «File .env e python-dotenv»?
Caricamento dei file .env, regole di .gitignore e best practice per dotenv Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «File .env e python-dotenv»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Variabili d’ambiente per gli agenti
- File .env e python-dotenv
- Rotazione e sicurezza dei segreti
- Profili di configurazione per sviluppo e produzione