Una comparación entre diferentes herramientas de gestión de dependencias para proyectos de Python
Introducción
La gestión de dependencias es un aspecto importante de cualquier proyecto de programación que requiere el uso de funcionalidades en bibliotecas y paquetes externos (bibliotecas y paquetes que no vienen con nuestro entorno de programación de forma predeterminada). Desarrollar aplicaciones complejas con el lenguaje de programación Python es un caso así. Hay varias herramientas disponibles que gestionan las dependencias de los proyectos de Python, como Pip, Conda e incluso Poetry. Si bien es comprensible que diferentes personas tengan preferencias diferentes en cuanto a las herramientas de gestión de dependencias, me gustaría compartir más sobre por qué es posible que te convenga usar Poetry en lugar de Pip o Conda. Solo incluyo Pip, Conda y Poetry en este artículo, ya que son las herramientas que he utilizado personalmente.
Inicios
Antes de continuar, creo que sería bueno entender un poco más sobre las diferentes herramientas de gestión de dependencias que vamos a comparar.
-
Conda:
Conda es una herramienta de gestión de dependencias que viene con Anaconda. Anaconda suele ser utilizada por principiantes en ciencia de datos que están comenzando en la programación en Python y no quieren preocuparse demasiado por instalar las dependencias comunes necesarias para el trabajo de ciencia de datos, como
numpy
,
pandas
,
jupyter
y
scikit-learn
. Más información sobre Conda se puede encontrar en su
documentación
, mientras que Anaconda también tiene su propio
página de inicio
.
-
Pip:
Pip es una herramienta de gestión de dependencias que viene junto con la instalación estándar de Python para Windows, y se puede instalar a través de Homebrew para MacOS y el administrador de aplicaciones de distribución para sistemas Linux (por ejemplo, apt para Debian y Ubuntu). Este
artículo de Real Python
da una buena descripción de cómo se puede empezar a usar Pip.
-
Poetry:
Poetry es una herramienta de gestión de dependencias más reciente que está ganando visibilidad y popularidad entre los usuarios de Python. El uso de los archivos
pyproject.toml
y
poetry.lock
lo hace similar a la forma en que funciona el Administrador de Paquetes de Nodo (npm) para Node.js. Más información sobre Poetry se puede encontrar en su
documentación
.
La Parte Divertida
Ahora es donde intento convencerte de que Poetry es la mejor elección de las 3 herramientas de gestión de dependencias que describí anteriormente.
Olvídate completamente de Conda si planeas programar en Python para producción
Sé que "olvidar xx completamente" es una frase bastante fuerte, pero tengo mis razones para decir esto.
Paquetes preinstalados en Anaconda
Si ejecutamos el comando
conda list
en el entorno base, podríamos ver algo como esto en la terminal:
(base) usuario:~$ 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
...