Pular para o conteúdo

    Capítulo 8, Ambiente

    Qual ferramenta escolher, editor e estrutura de projeto

    Cinco ferramentas fazem coisas parecidas. Eu comparo com critérios objetivos e digo o que escolheria em cada situação.

    Código deste capítulo: ambiente/cap08_estrutura_projeto.py

    Comparação

    Critériopip e venvpyenvpipxPoetryuv
    Instala versões de PythonNãoSim (compila)NãoNãoSim (binários prontos)
    Cria ambiente virtualSim (venv)NãoUm por ferramentaSimSim
    Resolve dependências indiretasBásicoNãoNãoSimSim
    Gera lockfileNãoNãoNãoSimSim
    Instala ferramentas de CLINãoNãoSimNãoSim (uv tool)
    Publica pacotesNãoNãoNãoSimSim (uv publish)
    Curva de aprendizadoBaixaMédiaBaixaMédiaBaixa

    Minha recomendação

    Eu escolheria uv para projetos novos, porque ele cobre o ciclo inteiro com uma ferramenta só. Escolheria Poetry se o time já o usa e o poetry.lock está em produção: trocar de gerenciador por modismo é custo sem retorno. Escolheria pip e venv para aprender e para ambientes restritos em que só o Python do sistema está disponível: o que você aprende ali serve em todo o resto. Escolheria pyenv se eu precisasse de uma compilação específica do Python. Escolheria pipx para ferramentas globais em máquinas onde o uv não está disponível.

    Editor

    O VS Code com a extensão Python da Microsoft resolve a maior parte dos casos. Depois de abrir a pasta do projeto, escolha o interpretador pelo comando Python: Select Interpreter (a paleta de comandos abre com Ctrl+Shift+P, ou Cmd+Shift+P no macOS) e aponte para o .venv do projeto. O PyCharm é uma alternativa completa se você prefere um IDE.

    Cuidado com a extensão Code Runner

    Por padrão, o Code Runner executa o arquivo no painel Output do VS Code, que não aceita digitação. Os exemplos com input() ficam parados ou falham ali. Rode no terminal integrado (python3 arquivo.py) ou use o botão Run Python File da extensão oficial.

    A estrutura mínima de um projeto

    Estrutura recomendada
    meu-projeto/
      pyproject.toml
      README.md
      .python-version
      .gitignore
      src/
        meu_projeto/
          __init__.py
          __main__.py
      tests/
        test_basico.py
    

    Todo ponto de entrada deve poder ser importado sem executar nada. O padrão é um main() protegido:

    ambiente/cap08_estrutura_projeto.pylinhas 10 a 15
    def main() -> None:
        print("projeto funcionando")
    
    
    if __name__ == "__main__":
        main()
    
    Saída
    projeto funcionando
    

    Explico o motivo dessa proteção no capítulo de módulos.

    Exercício 1

    Monte o seu ambiente de trabalho

    Crie uma pasta meu-primeiro-projeto, fixe o Python 3.13, crie o ambiente, instale requests e confirme dentro do Python que o ambiente está ativo.