🔧 Troubleshooting
Guia completo para resolução de problemas comuns do projeto Machine Learning Engineer Challenge.
🚨 Problemas Mais Comuns
🐍 Problemas com Python
❌ Versão incorreta do Python
Sintoma:
Soluções:
❌ Poetry não reconhece Python
Sintoma:
Soluções:
# 1. Verificar caminhos disponíveis
which python3.12
where python # Windows
# 2. Usar caminho completo
poetry env use /usr/bin/python3.12 # Linux/macOS
poetry env use C:\Python312\python.exe # Windows
# 3. Reinstalar Poetry
pip uninstall poetry
curl -sSL https://install.python-poetry.org | python3 -
📦 Problemas com Poetry
❌ Conflitos de dependências
Sintoma:
poetry install
# Solving dependencies... (this may take a minute)
# Because project depends on package A (^1.0.0) and package B (^2.0.0),
# version solving failed.
Soluções:
❌ Ambiente virtual corrompido
Sintoma:
Soluções:
# 1. Remover ambiente completamente
poetry env remove --all
# 2. Recriar ambiente
poetry env use 3.12.7
poetry install
# 3. Verificar
poetry env info
⚡ Problemas com a API
❌ API não inicia
Sintomas:
uvicorn src.routers.main:app --reload
# ModuleNotFoundError: No module named 'src'
# OU
# Error loading ASGI app
Soluções:
❌ Erro 500 na API
Sintomas:
Diagnóstico:
# 1. Verificar logs do uvicorn
# Os logs aparecem no terminal onde uvicorn está executando
# 2. Testar imports manualmente
poetry run python -c "
from src.services.database import get_database
db = get_database()
print('Database OK')
"
# 3. Verificar modelo
ls -la model/
poetry run python -c "
import pickle
with open('model/modelo_arvore_decisao.pkl', 'rb') as f:
model = pickle.load(f)
print('Model OK')
"
🧪 Problemas com Testes
❌ Testes falham por imports
Sintoma:
Soluções:
# 1. Executar do diretório raiz
cd machine_learning_engineer
# 2. Usar Poetry
poetry run pytest
# 3. Verificar PYTHONPATH no pytest.ini
cat pytest.ini
# testpaths = tests
# python_paths = .
❌ Testes falham por dependências
Sintoma:
Soluções:
# 1. Instalar dependências de teste
poetry install
# 2. Verificar se dependências estão instaladas
poetry run pip list | grep scikit-learn
# 3. Testes com skip condicional
pytest tests/test_ml_pipeline.py -v
# Deve mostrar SKIPPED para módulos não disponíveis
🐳 Problemas com Docker
❌ Docker build falha
Sintomas:
docker build -t ml-engineer-api .
# Error: failed to solve: process "/bin/sh -c pip install poetry" did not complete successfully
Soluções:
❌ Docker compose falha
Sintomas:
Diagnóstico:
# 1. Verificar compose file
docker-compose config
# 2. Build individual
docker-compose build api
# 3. Logs detalhados
docker-compose up --build --verbose
# 4. Verificar volumes
docker volume ls
docker volume inspect ml_mongodb_data
📊 Problemas com Dados
❌ Arquivo de dados não encontrado
Sintomas:
Soluções:
# 1. Verificar estrutura de dados
ls -la data/input/
# 2. Verificar diretório atual
pwd
# 3. Usar caminhos absolutos
import os
data_path = os.path.join(os.getcwd(), 'data', 'input', 'voos.json')
❌ Modelo não carrega
Sintomas:
Soluções:
# 1. Verificar se modelo existe
ls -la model/
# 2. Se não existe, treinar modelo
jupyter lab notebook/Model.ipynb
# 3. Verificar compatibilidade de versão
poetry run python -c "
import sklearn
print(f'Scikit-learn version: {sklearn.__version__}')
"
🌐 Problemas de Rede
❌ MongoDB não conecta
Sintomas:
docker-compose up
# api_1 | pymongo.errors.ServerSelectionTimeoutError: mongodb:27017: [Errno -2] Name or service not known
Soluções:
📝 Problemas com Notebooks
❌ Kernel não encontrado
Sintomas:
Soluções:
# 1. Instalar ipykernel no ambiente Poetry
poetry add ipykernel
# 2. Registrar kernel
poetry run python -m ipykernel install --user --name ml-engineer
# 3. Selecionar kernel correto no Jupyter
# Kernel > Change Kernel > ml-engineer
❌ Imports falham no notebook
Sintomas:
Soluções:
# 1. Adicionar path no notebook
import sys
import os
sys.path.append(os.path.abspath('..'))
# 2. Ou usar PYTHONPATH
import os
os.chdir('..') # Se notebook está em subpasta
🔍 Comandos de Diagnóstico
🐍 Verificação do Ambiente Python
# Informações completas do ambiente
poetry env info
# Versão do Python
python --version
# Localização do executável
which python # Linux/macOS
where python # Windows
# Pacotes instalados
poetry show
# Verificar imports críticos
poetry run python -c "
import sys
print(f'Python: {sys.version}')
try:
import fastapi
print(f'FastAPI: {fastapi.__version__}')
except ImportError as e:
print(f'FastAPI Error: {e}')
try:
import pandas
print(f'Pandas: {pandas.__version__}')
except ImportError as e:
print(f'Pandas Error: {e}')
try:
import sklearn
print(f'Sklearn: {sklearn.__version__}')
except ImportError as e:
print(f'Sklearn Error: {e}')
"
🔧 Verificação de Sistema
# Informações do sistema
uname -a # Linux/macOS
systeminfo # Windows
# Espaço em disco
df -h # Linux/macOS
dir # Windows
# Memória disponível
free -h # Linux
top # macOS
tasklist # Windows
# Processos Python
ps aux | grep python # Linux/macOS
tasklist | findstr python # Windows
🌐 Verificação de Rede
# Testar conectividade
ping google.com
# Portas em uso
netstat -tuln # Linux
netstat -an # Windows/macOS
# Testar porta específica
telnet localhost 8000
# Processos usando porta
lsof -i :8000 # Linux/macOS
netstat -ano | findstr :8000 # Windows
🚨 Soluções Rápidas
⚡ Reset Completo do Ambiente
# 1. Limpar tudo
poetry env remove --all
rm -rf .venv/
rm poetry.lock
# 2. Recriar ambiente
poetry env use 3.12.7
poetry install
# 3. Testar
poetry run python -c "print('Environment OK')"
poetry run task test
🐳 Reset Completo do Docker
# 1. Parar tudo
docker-compose down --volumes --remove-orphans
# 2. Limpar sistema
docker system prune -a
docker volume prune
# 3. Rebuild
docker-compose build --no-cache
docker-compose up
📊 Verificação Completa do Projeto
#!/bin/bash
# check_project.sh
echo "🔍 Verificando projeto..."
# Python e Poetry
echo "1. Python e Poetry:"
poetry --version
poetry env info
# Dependências
echo "2. Dependências críticas:"
poetry run python -c "
import fastapi, pandas, sklearn
print('✅ Dependências OK')
"
# Estrutura de arquivos
echo "3. Estrutura de arquivos:"
ls -la src/ data/ tests/ model/
# Testes
echo "4. Testes rápidos:"
poetry run pytest tests/ -x --tb=short
# API
echo "5. Testando API:"
poetry run python -c "
from fastapi.testclient import TestClient
from src.routers.main import app
client = TestClient(app)
response = client.get('/health')
print(f'Health check: {response.status_code}')
"
echo "✅ Verificação completa!"
📚 Logs e Debugging
📋 Configuração de Logs
# logging_config.py
import logging
import sys
def setup_logging(level=logging.INFO):
"""Configurar logs para debugging"""
logging.basicConfig(
level=level,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('app.log'),
logging.StreamHandler(sys.stdout)
]
)
# Logs específicos
logging.getLogger('uvicorn').setLevel(logging.INFO)
logging.getLogger('fastapi').setLevel(logging.DEBUG)
# Uso nos módulos
import logging
logger = logging.getLogger(__name__)
logger.info("Debugging info here")
🔍 Debug da API
# src/routers/main.py
import logging
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def log_requests(request: Request, call_next):
"""Log de todas as requests"""
start_time = time.time()
logger.info(f"Request: {request.method} {request.url}")
response = await call_next(request)
process_time = time.time() - start_time
logger.info(f"Response: {response.status_code} ({process_time:.3f}s)")
return response
📞 Quando Pedir Ajuda
🐛 Criando Issues Efetivas
Template de Issue:
## 🐛 Descrição do Problema
[Descreva o problema claramente]
## 🔄 Passos para Reproduzir
1. Primeiro passo
2. Segundo passo
3. Erro ocorre aqui
## 📋 Informações do Ambiente
- OS: [Windows/Linux/macOS]
- Python: [versão]
- Poetry: [versão]
- Docker: [versão se aplicável]
## 📊 Logs/Screenshots
📧 Contato Direto
- 📧 Email: ulisses.bomjardim@gmail.com
- 🐛 Issues: GitHub Issues
- 💬 Discussões: GitHub Discussions