0Pricing
AI Agents · Aula

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

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

O 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/agentdb

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

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

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

Vá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:

  1. Crie .env com chaves reais (nunca confirme o arquivo)
  2. Crie .env.example com espaços reservados (confirme este arquivo)
  3. Adicione .env ao .gitignore
  4. Adicione load_dotenv() ao início do ponto de entrada
  5. Valide as variáveis obrigatórias na inicialização
  6. 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 .env com valores reais — nunca o confirme
  • Crie .env.example com 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

  1. Variáveis de ambiente para agentes
  2. Arquivos .env e python-dotenv
  3. Rotação e segurança de segredos
  4. Perfis de configuração para desenvolvimento e produção
← Voltar para AI Agents