Amigos, boa noite! Temos ótimas notícias, recrutamento aberto em um novo grupo no curso
"Desenvolvedor Python" . O grupo começa já no início de julho e, agora, de acordo com uma tradição estabelecida, estamos compartilhando uma tradução útil preparada para os alunos deste curso.

Quando você começa a aprender Python, alguém explica que você pode adicionar sua pasta de origem à variável de ambiente
PYTHONPATH e, em seguida, seu código pode ser importado de outros diretórios. Muitas vezes, o explicador esquece de dizer que, na maioria dos casos, isso é uma má ideia. Algumas pessoas descobrem isso na Internet, outras apenas entendem em primeira mão. Mas muitas pessoas (especialmente programadores inexperientes) pensam que não pode haver outras alternativas.
Este artigo é principalmente para eles, porque mesmo se você souber que existe uma alternativa, nem sempre é fácil aceitá-lo e começar a usá-lo. As ferramentas Python são confusas porque são muitos softwares criados em cima de outros, com muitas sobreposições e problemas resultantes disso. Não é fácil entender como usar essas ferramentas corretamente em seu projeto.
Por esse motivo, decidi escrever este artigo e considerar as ferramentas mais populares nele, para descobrir quando e onde eles são usados e quais tarefas eles resolvem. Vou tentar explicar nos dedos como usar cada uma dessas ferramentas. Se a ferramenta estiver nessa lista, você, como pythonist, precisará pelo menos saber sobre sua existência. Falarei apenas sobre as ferramentas que podem ser aplicadas a qualquer projeto ou fluxo de trabalho, e você deve se lembrar delas quando iniciar um novo projeto. No entanto, isso não significa que você deve usar todas as ferramentas apresentadas em cada um de seus projetos. Não é necessário sobrecarregar o projeto com ferramentas; em alguns casos, isso pode complicar seu suporte.
Ferramentas básicas
Setuptools
Setuptools é a maneira padrão de criar pacotes em Python. Ele trabalha em qualquer lugar e faz seu trabalho bem.
Motivo : crie arquivos egg, zip ou wheel a partir da fonte, defina metadados para o seu projeto, trabalho estruturado e padronizado em código.
Quando usado : Sempre quando você escreve um código que deve ser executado na máquina de outra pessoa.
Alternativas : Poesia, Flit
virtualenv
Virtualenv é um gerenciador de ambiente virtual. Essas caixas de proteção são python autônomo com um conjunto específico de pacotes pré-instalados. Usar virtualenv significa que você não precisa instalar pacotes no sistema python por padrão.
Motivo : separação de dependências, suporte para diferentes versões do python por um sistema, fácil realocação de dependências.
Quando usado : você precisa escrever um código e, para isso, precisa de uma versão python diferente da versão padrão do sistema python.
Alternativas : Docker ou algo semelhante.
Pip
Pip é o gerenciador de pacotes mais comum em python. Ele permite que você instale pacotes locais ou remotos em seu ambiente virtual ou sistema Python.
Para o que : instalar e remover pacotes, rastreando as versões dos pacotes que você usa.
Quando usado : Sempre.
Alternativas : Poesia, Conda
Criação e distribuição de pacotes
Para uma visão mais detalhada, python.org tem uma página separada: packaging.python.org
distutils
O distutils é o precursor das ferramentas de instalação. Este último usa ativamente a funcionalidade distutils, portanto, muitas vezes é necessário interagir com essa ferramenta. Distutils não é exatamente a ferramenta que você deve ter em seu arsenal, mas você deve saber como ele se encaixa no cenário geral.
Pypi
O Índice de Pacotes
Pypi ou Python é um grande repositório que contém todos os seus módulos Python favoritos. Por exemplo, o mesmo pip leva compilações de pacotes a partir daí.
Por que : para publicar seu código.
Quando usado : quando há um pacote que você deseja mostrar à comunidade.
Pypiserver
O Pypiserver é uma das implementações da API do Package Index usada pelo Pypi. Você pode criar seu próprio repositório, por exemplo, para toda a sua empresa e publicar pacotes sem fazer lançamentos públicos.
Motivo : crie seus próprios repositórios dentro da organização.
Quando usado : quando seu código não precisa de publicidade, mas é necessário controle total sobre ele.
Alternativas : Armazém (usado por Pypi), djangopypi
Poesia
A poesia é um sistema alternativo de gerenciamento de pacotes que substitui as ferramentas de instalação, o pip e algumas outras ferramentas criadas com base em suas bases. Esta é uma tentativa de redefinir completamente como o sistema de pacotes funciona no Python. Até o momento, a poesia tem muitas críticas positivas, mas não é a ferramenta mais comum.
Motivo : processamento e distribuição de pacotes, gerenciamento de dependências, prevenção de problemas na resolução de dependências.
Quando usar : Quando você está planejando um novo projeto e não tem medo de usar ferramentas altamente especializadas.
Alternativas : Pipenv
Pipenv
O Pipenv , como o Poetry, é uma ferramenta para estruturar dependências e configurar projetos Python de uma maneira mais sensata. Com o Pipfile, ele gerencia as dependências do seu projeto e garante consistência e facilidade de uso.
Por que : processamento e distribuição de pacotes, gerenciamento de dependências.
Quando usado : você precisa de uma ferramenta como a poesia que causará menos perguntas.
Alternativas : Poesia.
A documentação
Esfinge
Sphinx é uma ferramenta para criar documentação. Foi originalmente criado para lidar com a documentação do Python, mas se tornou uma ferramenta comum. É a opção mais comum para projetos Python.
Motivo : crie documentos PDF ou HTML usando uma linguagem de marcação de fontes reStructuredText.
Quando usado : quando seu projeto, API ou código requer documentação externa.
Alternativas : Docutils, Doxygen
autodoc
autodoc é uma extensão fundamental do Sphinx que permite criar arquivos reStructuredText a partir do código-fonte Python com assinaturas para cada classe, função, módulo e assim por diante.
Motivo : documentando seu código ou API.
Quando usado : De fato, toda vez que você usa o Sphinx.
Alternativas : resumo automático
Teste
py.test
py.test - na minha opinião, é o melhor pacote para teste em Python. Ele tem muitas funções, embora nem todas sejam abertas corretamente, portanto, levará algum tempo para procurar todas as possibilidades que o py.test oferece.
Motivo : testando seu código.
Quando usado : Sempre com preguiça de testar manualmente.
Alternativas : unittest, nariz
Hipótese
A hipótese é uma ferramenta para testar propriedades individuais. Em resumo, ele gera scripts de teste aleatórios de acordo com suas especificações até encontrar um cenário em que o teste falha. Reserve um tempo para aprender os princípios antes de começar a usar esta ferramenta.
Motivo : teste de código, especialmente processamento de dados.
Quando usar : Quando você precisa testar a lógica não trivial com uma ampla gama de valores de entrada (números, seqüências de caracteres, dados estruturados).
tox
O tox é um gerenciador de ambiente virtual para testes. Isso significa que você pode configurá-lo para executar testes em ambientes virtuais limpos e personalizáveis, para garantir que seu código funcione sob várias condições.
Motivo : para código que deve ser executado em várias condições e ambientes. Também é útil para o IC.
Quando usar : Quando você precisar que seu código seja suportado por diferentes versões do Python, execute em diferentes ambientes e em diferentes sistemas operacionais.
Alternativas : scripts de bash, pipelines de CI
Outras ferramentas
pyenv
pyenv é o gerenciador de versões do python. O objetivo é simplificar o fluxo de trabalho local dos desenvolvedores ao trabalhar com várias versões.
Por que : lançar vários projetos com diferentes versões do Python.
Quando usado : você precisa trabalhar com versões globais do Python e possui muitas delas.
Alternativas : gerenciamento manual, virtualenv, Poetry, Pipenv
PyScaffold
O PyScaffold é uma ferramenta para inicializar a estrutura de um projeto de maneira padronizada e fornecer algumas das ferramentas listadas acima sem precisar configurá-las manualmente. Muito flexível.
Motivo : para carregar projetos, trabalhando com vários projetos com as mesmas ferramentas e estrutura.
Quando usado : sempre (se você estiver familiarizado com esta ferramenta, mas não tente usá-la pela primeira vez quando estiver com pressa)
Alternativas : python-project-template, Cookiecutter
flake8
O flake8 é um dos
linters mais populares para Python. Ele executa vários scripts para verificar se o seu código corresponde aos requisitos do Guia de Estilo do Python (
PEP-8 ).
Para o que : verificar o seu projeto para um bom estilo de escrita.
Quando usado : toda vez que seu projeto deve ser lido por alguém ou por você.
Alternativas : pylint
Preto
Preto formata automaticamente o código. Isso significa que, em vez de apenas verificar seu código quanto à conformidade com os padrões, o Black o alterará independentemente para ajustá-lo.
Motivo : formatação automática de código.
Quando usado : quando você não tem nenhum problema em se recusar a gerenciar manualmente seu código.
Alternativas : autopep8, yapf
Só isso. À espera de seus comentários ;-).