Generando: requirements.txt

31 views
Skip to first unread message

Juan Marquez

unread,
Mar 14, 2017, 6:42:44 AM3/14/17
to Python-Venezuela
Me encontré esto, el método 1 lo conocía el 2 no.

Aunque no sé que tan "bien" pensaron el nombre del sitio ;-).


David De Sousa

unread,
Mar 14, 2017, 6:57:48 AM3/14/17
to Python-Venezuela
Yo lo hago con un makefile, en mi ambiente de desarrollo no fijo ninguna versión, y tengo los requerimientos separados en dev, test, base y server.

dev para cosas como debuggers y ipython, está en .gitignore
base todo lo común para la aplicación
test para todos los requerimientos necesarios para correr pruebas
server para lo necesario para hostear (mailgun, gunicorn... cosas como esas)

mi Makefile toma los requerimientos de server y base, crea un virtualenv vacío, instala los requerimientos y con pip freeze genera el requirements.txt

con tox tengo al menos dos ambientes, uno que toma el requirements.txt (con las versiones fijas de lo que está corriendo en producción) y requirements-test y corre las pruebas, esto garantiza que lo que sea que hayas cambiado seguirá funcionando en producción sin actualizar paquetes.

el otro prueba las últimas versiones de todo contra tu código, así sabes si hay alguna actualización que te genera problemas.

por supuesto que hay más ambientes en mi tox, pero esos son los absolutamente necesarios.

On Tue, Mar 14, 2017 at 11:42 AM Juan Marquez <juanvm...@gmail.com> wrote:
Me encontré esto, el método 1 lo conocía el 2 no.

Aunque no sé que tan "bien" pensaron el nombre del sitio ;-).


--
Este es un mensaje del foro Python de Venezuela - http://www.python.org.ve
Para suscripciones y retiros: http://goo.gl/ug9by
---
Has recibido este mensaje porque estás suscrito al grupo "Python Venezuela" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a python-venezue...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juancarlo Añez

unread,
Mar 14, 2017, 10:57:53 AM3/14/17
to python-venezuela

2017-03-14 6:42 GMT-04:00 Juan Marquez <juanvm...@gmail.com>:

Me encontré esto, el método 1 lo conocía el 2 no.

Aunque no sé que tan "bien" pensaron el nombre del sitio ;-).

pip freeze lista los requerimientos de los requerimientos directos, los cuales pueden cambiar, y los paquetes usados sólo durante desarrollo.

Además, freeze fija las versiones, con lo cual se dejan afuera las actualizaciones para correcciones de bugs.

Hoy en día prefiero listar los requerimientos a mano, usando >= y < para cada uno.

He visto proyectos que usan la extensión .pip en vez de .txt, y eso me parece bueno. También hay los proyectos que tienen:

  • install.pip
  • test.pip
  • dev.pip
  • etc.pip

Para mi lo ideal es que el contenido de un install.pip pueda incluirse directamente en setup.py


def requirements():
    import io
    return io.open('install.pip', encoding='utf-8').read().splitlines()

setuptools.setup(
        install_requires=requirements(),

 ...
--
Juancarlo Añez
tel:+58(414)901-2021
skype:juancarloanez

Tomas Henriquez

unread,
Mar 14, 2017, 2:37:55 PM3/14/17
to python-venezuela
Otra manera de instalación de requirements que me gusta bastante es este estilo. En el ejemplo no tiene las versiones, pero las acepta sin problema. Ahi puedes colocar los requerimientos base y agregar "extras" según tus necesidades para tests/dev, etc. basado en setuptools.

David, Bien chevere lo de tox, no conocía la herramienta. Tendrás algún proyecto open source que compartir que use ese setup? la idea parece estar bien en linea con un CI sencillo en la linea de comandos.

Juancarlo, lo que no me gusta de ese método es que llega un momento que mantener los diferentes archivos de instalación al día entre si (install.pip vs dev.pip por ejemplo) se vuelve un dolor de cabeza porque comparten muchos módulos base. Aunque se podría jugar con el setup.py para resolver ese problema supongo.

Saludos,



--

Tomas Henriquez

unread,
Mar 14, 2017, 5:53:19 PM3/14/17
to python-venezuela
Ya encontre los ejemplos de Tox hehe. +1
Reply all
Reply to author
Forward
0 new messages