Declare tudo no pyproject.toml e gerencie o ambiente com uv, que cria o ambiente virtual, resolve dependências e escreve um lock file rapidamente. Mantenha as dependências diretas frouxas na tabela do projeto, versione o lock file para instalações reprodutíveis, e separe ferramentas de desenvolvimento em grupos de dependência para as imagens de produção não levarem pytest e ruff.
Por que os entrevistadores perguntam isso
Empacotamento é onde o Python historicamente doeu, então o entrevistador está checando se você está atualizado em vez de ainda copiando um fluxo de requirements de uma década atrás. Eles querem a distinção entre dependências declaradas e lock file, consciência de que o pyproject.toml é o lugar padrão da configuração, e evidência de que você pensou em builds reprodutíveis em CI e Docker.
Como estruturar sua resposta
- Cite o pyproject.toml como fonte única de verdade.
- Separe faixas declaradas do lock file.
- Divida grupos de dependência de runtime e de desenvolvimento.
- Amarre isso a CI e a builds de container.
Exemplo de resposta
Tudo vive no pyproject.toml: as dependências, a configuração de ferramenta do ruff, do mypy e do pytest, os metadados de build. Eu uso uv para conduzir, porque ele cria a venv, resolve e instala rápido o suficiente para um ambiente de CI frio levar segundos em vez de minutos, e ele gerencia a versão do interpretador também, então ninguém fica brigando sobre qual Python está no path. As dependências diretas ganham restrições razoavelmente frouxas, aí o uv lock produz o conjunto resolvido exato e esse lock file é versionado. CI e Docker instalam a partir do lock congelado, então o que roda em produção é bit a bit o que eu testei. Ferramentas de desenvolvimento vão num grupo separado, o que deixa a imagem de runtime menor e significa que um linter comprometido não fica sentado no container de produção. No Docker eu copio o lock e o manifesto primeiro e instalo antes de copiar o código, para o cache de camadas funcionar de verdade. Migrar um projeto antigo de pip e arquivos de requirements levou talvez uma tarde e cortou vários minutos do nosso passo de setup no CI.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Do que o lock file te protege?
- Como você lida com uma dependência que não tem wheel?
- Como você gerencia várias versões de Python localmente?
Mais perguntas para Desenvolvedor Python
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas