Uma comparação entre diferentes ferramentas de gerenciamento de dependências para projetos em Python
Introdução
A gestão de dependências é um aspecto importante de qualquer projeto de programação que requer o uso de funcionalidades em bibliotecas e pacotes externos (bibliotecas e pacotes que não vêm com nosso ambiente de programação por padrão). Desenvolver aplicações complexas com a linguagem de programação Python é um exemplo disso. Existem várias ferramentas disponíveis para gerenciar as dependências de projetos em Python, como Pip, Conda e até Poetry. Embora seja compreensível que diferentes pessoas tenham preferências diferentes em relação às ferramentas de gerenciamento de dependências, gostaria de compartilhar mais sobre por que pode ser vantajoso usar Poetry em vez de Pip ou Conda. Apenas incluo Pip, Conda e Poetry neste artigo, pois são as ferramentas que utilizei pessoalmente.
Começos
Antes de prosseguir, acredito que seria bom entender um pouco mais sobre as diferentes ferramentas de gerenciamento de dependências que vamos comparar.
-
Conda:
Conda é uma ferramenta de gerenciamento de dependências que vem com o Anaconda. O Anaconda costuma ser usado por iniciantes em ciência de dados que estão começando a programar em Python e não querem se preocupar muito em instalar as dependências comuns necessárias para o trabalho em ciência de dados, como
numpy
,
pandas
,
jupyter
e
scikit-learn
. Mais informações sobre o Conda podem ser encontradas em sua
documentação
, enquanto o Anaconda também possui sua própria
página inicial
.
-
Pip:
Pip é uma ferramenta de gerenciamento de dependências que vem com a instalação padrão do Python para Windows e pode ser instalado via Homebrew para MacOS e pelo gerenciador de pacotes de distribuição para sistemas Linux (por exemplo, apt para Debian e Ubuntu). Este
artigo do Real Python
fornece uma boa descrição de como começar a usar o Pip.
-
Poetry:
Poetry é uma ferramenta de gerenciamento de dependências mais recente que está ganhando visibilidade e popularidade entre os usuários de Python. O uso dos arquivos
pyproject.toml
e
poetry.lock
o torna semelhante à forma como o Gerenciador de Pacotes do Node (npm) funciona para o Node.js. Mais informações sobre o Poetry podem ser encontradas em sua
documentação
.
A Parte Divertida
Agora é onde tento convencer você de que o Poetry é a melhor escolha entre as 3 ferramentas de gerenciamento de dependências que descrevi anteriormente.
Esqueça completamente o Conda se planeja programar em Python para produção
Eu sei que "esquecer xx completamente" é uma afirmação bastante forte, mas tenho minhas razões para dizer isso.
Pacotes pré-instalados no Anaconda
Se executarmos o comando
conda list
no ambiente base, poderemos ver algo como isso no terminal:
(base) usuário:~$ conda list
_ipyw_jlab_nb_ext_conf 0.1.0 py39h06a4308_0
_libgcc_mutex 0.1 principal
_openmp_mutex 4.5 1_gnu
alabaster 0.7.12 pyhd3eb1b0_0
...
jupyter 1.0.0 py39h06a4308_7
...
numpy 1.20.3 py39hf144106_0
...
pandas 1.3.4 py39h8c16a72_0
...
scikit-learn 0.24.2 py39ha9443f7_0
...