2011-06-07 33 views
6

En mi lugar de trabajo, tengo que administrar muchas (actualmente decenas, pero probablemente cientos) aplicaciones web de Python, que potencialmente ejecutan varios marcos, bibliotecas, etc. (todo en varias versiones). Virtualenv ha sido un salvavidas en la gestión de eso hasta el momento, pero aún me gustaría poder administrar mejor las cosas, particularmente cuando se trata de administrar actualizaciones de paquetes.Administración de muchos proyectos Python/virtualenvs

he pensado en algunos escenarios

Opción 1: Instalar todos los módulos necesarios para cada proyecto en cada virtualenv usando pip, actualizar cada forma individual, según sea necesario. Esto requeriría un costo de tiempo significativo para cada actualización y requeriría documentación adicional para realizar un seguimiento de las cosas. Podría ser facilitado por algunas secuencias de comandos de gestión.

Opción 2: Instale todas las bibliotecas utilizadas por cualquier aplicación en un repositorio central, use enlaces simbólicos para cambiar versiones fácilmente una vez para todos los proyectos. Actualizaciones sencillas y administración central, pero en primer lugar, renuncia a algunos de los mejores beneficios del uso de virtualenv.

Opción 3: Hibride los dos anteriores de alguna manera, centralizando las bibliotecas más comunes y/o las que probablemente necesiten actualizaciones e instalando el resto localmente para cada virtualenv.

¿Alguien más tiene una situación similar? ¿Cuál es la mejor manera de manejar esto?

Respuesta

2

Puede considerar el uso de zc.buildout. Es más molesto configurar que simple pip/virtualenv, pero te da más oportunidades para la automatización. Si el uso del espacio en disco no es un problema, le sugiero que siga usando los entornos individuales para cada proyecto, de modo que pueda actualizarlos de uno en uno.

+0

Parece que Buildout ofrece algunas herramientas bastante buenas para este tipo de cosas. Tendré que analizarlo un poco más profundamente para ver cómo funcionaría para automatizar nuestros problemas. –

0

Tenemos un archivo requirements.pip en nuestro proyecto raíz que contiene los paquetes para instalar pip, por lo que la actualización automática es relativamente fácil. No estoy seguro de que el enlace simbólico solucione el problema: hará más difícil realizar actualizaciones a un subconjunto de sus proyectos. Si el espacio de disco no es un problema, y ​​puede escribir algunos scripts simples para listar y actualizar paquetes, me quedaría con virtualenv como está.

Cuestiones relacionadas