Arquivos .env e python-dotenv
Carregamento de arquivos .env, regras do .gitignore e boas práticas do dotenv.
Arquivos .env e python-dotenv é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
O problema das exportações do shell
Definir variáveis de ambiente com export no shell funciona, mas exige redefini-las a cada nova sessão do terminal. Gerenciar muitas variáveis dessa forma é propenso a erros e não é compartilhável com a equipe.
Os arquivos .env resolvem esse problema armazenando todas as variáveis do projeto em um único arquivo que é carregado automaticamente.
O formato do arquivo .env
Um arquivo .env contém pares KEY=VALUE, um por linha. As linhas que começam com # são comentários. Os valores podem ser colocados entre aspas opcionalmente. Esse formato simples é compreendido por dezenas de ferramentas e estruturas.
# .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=developmentCarregando .env com python-dotenv
Instale python-dotenv com pip install python-dotenv. Chame load_dotenv() logo no início do ponto de entrada, antes de qualquer leitura de os.environ. Isso carrega o arquivo .env e preenche o 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}')Opções de load_dotenv()
load_dotenv() tem várias opções úteis: dotenv_path= para especificar um caminho personalizado, override=True para substituir variáveis de ambiente existentes (o padrão é ignorá-las) e verbose=True para registrar qual arquivo foi carregado.
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() para dicionários de configuração explícitos
dotenv_values() retorna o conteúdo do arquivo .env como um dicionário Python sem modificar o ambiente. Isso é útil quando você quer inspecionar ou usar a configuração sem poluir o ambiente do 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 pipelineO arquivo .env.example
Crie um arquivo .env.example que documente todas as variáveis obrigatórias com valores de espaço reservado. Este arquivo IS confirmado no git — ele serve como documentação para a equipe e para novas pessoas desenvolvedoras sobre o que deve ser configurado.
# .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/agentdbAdicionando .env ao .gitignore
O arquivo .env deve NEVER ser confirmado no git. Adicione-o imediatamente ao .gitignore quando criar seu projeto. Verifique se ele está sendo ignorado antes da sua primeira confirmação.
# .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' >> .gitignoreGancho de pré-confirmação para bloquear confirmações de .env
Adicione um gancho de pré-confirmação que bloqueie qualquer confirmação contendo um arquivo .env. Isso oferece uma rede de segurança automática caso alguém se esqueça de verificar o .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 0Carregando .env em diferentes estruturas
Muitas estruturas carregam arquivos .env automaticamente. FastAPI (por meio de pydantic-settings), Django (por meio de django-environ) e Docker Compose oferecem suporte nativo a .env. Conhecer esses padrões evita carregamentos duplicados.
# 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 agentsVários arquivos .env para diferentes ambientes
Use arquivos .env separados para diferentes ambientes: .env.development, .env.staging, .env.production. Carregue o arquivo correto com base na variável 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)Lista de verificação completa da configuração
Uma lista de verificação completa para configurar .env em um novo projeto de agente:
- Crie
.envcom chaves reais (nunca confirme o arquivo) - Crie
.env.examplecom espaços reservados (confirme este arquivo) - Adicione
.envao.gitignore - Adicione
load_dotenv()ao início do ponto de entrada - Valide as variáveis obrigatórias na inicialização
- Adicione
cp .env.example .envàs instruções de configuração do seu README
Verificação de conhecimento: arquivos .env e python-dotenv
Teste sua compreensão dos arquivos .env e da biblioteca python-dotenv.
Recapitulação: arquivos .env e python-dotenv
Agora você dispõe de um fluxo de trabalho completo com .env para projetos de agentes:
- Crie um arquivo
.envcom valores reais — nunca o confirme - Crie
.env.examplecom espaços reservados — confirme-o sempre - Adicione
.env*(exceto .env.example) ao.gitignore - Chame
load_dotenv()logo no início do ponto de entrada - Use
dotenv_values()para acessar o dicionário sem tocar em os.environ - Use arquivos separados por ambiente (
.env.staging,.env.production)
Esse fluxo mantém os segredos fora do git e, ao mesmo tempo, facilita o desenvolvimento local.
Perguntas Frequentes
A aula “Arquivos .env e python-dotenv” é grátis?
Sim — o texto completo de “Arquivos .env e python-dotenv” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Arquivos .env e python-dotenv”?
Carregamento de arquivos .env, regras do .gitignore e boas práticas do dotenv. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Arquivos .env e python-dotenv”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Variáveis de ambiente para agentes
- Arquivos .env e python-dotenv
- Rotação e segurança de segredos
- Perfis de configuração para desenvolvimento e produção