Python y el manejo de dependencias

(there is an English version of this post, `here <https://github.com/PyAr/fades/blob/master/docs/pydepmanag.rst>`_)

Python tiene una biblioteca estándar muy extensa ("viene con las pilas incluidas"), pero es frecuente la necesidad de usar otros módulos que están afuera de la misma, casi siempre desde el Índice de Paquetes de Python (PyPI).

La manera original de instalar esos módulos es a "nivel de sistema" (sudo pip install foobar), en el sistema operativo de forma general, habilitándolos para ser utilizados por cualquier programa que se ejecute.

Más allá de necesitar permisos de root o administrador para instalar las dependencias de esta manera, el primer problema con el que nos encontramos es el de conflictos: el caso típico de dos programas que necesitan la misma dependencia pero en versiones distintas, lo cual no puede lograrse al instalar las dependencias en forma global.

Por eso es que es tan normal en el mundo de Python usar "entornos virtuales". Se crea un entorno virtual para cada programa, se instala las dependencias necesarias para cada programa en cada entorno virtual, y como lo que instalamos en ese entorno es sólo accesible desde dentro del entorno, no hay más conflictos.

En este punto, sin embargo, aparece el problema de la administración de los entornos virtuales: crearlos, instalarles cosas, activarlos para usarlos con cada programa y desactivarlos luego, recordar los nombres de cada entorno para cada programa, etc.

Para automatizar esto nació fades.

fades les permite utilizar todo el poder de los entornos virtuales sin tener que preocuparse por ellos.

¿Quieren ejecutar un script que necesita la dependencia foobar?

fades -d foobar script.py

¿Quieren un intérprete interactivo teniendo foobar instalado como dependencia?

fades -d foobar

¿Necesitan ejecutar el script pero con varias dependencias, alguna en una versión específica?

fades -d foo -d bar -d baz==1.1 script.py

¿Tienen todas las dependencias en un archivo de requerimientos?

fades -r requirements.txt script.py

Esto es sólo lo más sencillo que podés hacer con fades. Los entornos virtuales son una herramienta poderosísima, y automatizar y simplificar su uso hace que fades tenga bastantes opciones, algunas que usarán todos los días, y otras que les van a resultar muy útiles en casos puntuales.

Empiecen a usar fades de a poco (acá tienen toda la documentación) y van a encontrar que van a tener resuelto el tema de la administración de dependencias en programas y scripts, usando entornos virtuales pero sin la complejidad de tener que hacerlo directamente y a mano.

Comentarios Imprimir

Regalo de año nuevo: Encuentro 4.0

Para arrancar el año pum para arriba, ¿qué mejor que una nueva versión de Encuentro?

Lo más destacado de esta nueva versión es que hay dos backends nuevos!

Por un lado, ahora se puede descargar de Contenidos Digitales Abiertos (también conocido como CDA), con casi 4000 episodios de centenares de documentales y series para mirar.

Por otro lado, trae más de 180 charlas TED del capítulo TEDx de Buenos Aires (que incluye TEDxBuenosAires, TEDxRíodelaPlata, TEDxJoven, y un par más).

Encuentro

También tiene varias mejoras importantes, como que se limpian los nombres de archivos para que puedan ser grabados en cualquier lado (pen drives, fat32, etc), o que rearmé el esquema de downloads y ahora es mucho mucho más robusto que antes. E incluso estuve mejorando los scrappers para backends que ya estaban incluidos en versiones anteriores, pero ahora tendrán mejores títulos, nombres más prolijos, etc.

Y claro, varias correcciones menores también, y seguramente algún par de bugs nuevos :p.

Las instrucciones para bajar Encuentro en tu sistema (Debian, Ubuntu, Arch, Windows, o cualquier otro sistema), junto con el detalle de los cambios, instrucciones, y todo eso, en la página del proyecto.

¡Disfruten!

Comentarios Imprimir