5

Estoy trabajando con un amigo en una aplicación web que nos gustaría distribuir y estamos trabajando en Django.Implementación de una aplicación Opensource de Django con dependencias

Me gustaría asegurarme de que la implementación sea lo más fácil posible para los usuarios potenciales. Parece que Django usa muchas bibliotecas instaladas compartidas y me gustaría que la gente simplemente necesite descargar nuestra última versión, descomprimir, editar un archivo de configuración o dos y comenzar, como wordpress, etc.

Estoy acostumbrado a la implementación del estilo Ruby on Rails, donde puedes pistonizar tus gemas y complementos en un directorio de proveedores y eso es todo lo que necesitas para confiar.

¿Cuál es la forma análoga de django de implementar una aplicación con todas las dependencias agrupadas? Preferiría no tener que usar algo como easy_install para desplegar dependencias después de la instalación.

This Python Stack Overflow Answer Parece que está en el camino correcto, pero ¿hay una manera específica de ir a Django? ¿Es esto un problema resuelto?

Respuesta

1

Esta es una de las grandes limitaciones de la "aplicación reutilizable" de Django. En el podcast "This Week in Django", hace una semana o dos, estaban hablando de este problema exacto. Parece que el consenso, y estoy de acuerdo, es que realmente no hay una solución.

Si miras Pynax, que es probablemente el proyecto de Django distribuido más grande, verás que están agrupando las aplicaciones con todo el sistema.

Python en sí tiene algunas distribuciones de paquetes. Sé que ActiveState está trabajando para comenzar otro. Pero incluso entonces, no todas las aplicaciones django están empacadas. Muchos solo se encuentran en bitbucket, github o google source. E incluso entonces, para obtener una copia de todo eso, se requiere tener instalado mercurial, git y svn. (Bla @ eso)

Es, básicamente, tiene 2 opciones aquí:

  1. Incluya una copia de cada dependencia con su fuente
  2. incluir la documentación de cómo los usuarios instalar una dependencia determinada

Es una lista triste, lo sé. Realmente apesta, especialmente después de usar el sistema ruby ​​gem, pero por el momento no estoy seguro de qué es lo mejor que vas a encontrar.

Si tiene algún interés, escribí una breve publicación en el blog sobre cómo mantener las dependencias en la carpeta de su proyecto (o en SVN) y luego agregar esa ruta a la ruta de búsqueda de Python al inicio de django. (Managing Django Dependencies via SVN) Confunde el intellisense de Komodo Edit, pero de otra forma facilita las cosas.

+0

Creo que esta estrategia de agrupamiento podría ser la más cercana a lo que están haciendo los ruby ​​on rails. – MattK

13

Su mejor apuesta aquí es hacer uso de pip. pip es una utilidad para instalar paquetes de Python. le permite crear archivos de requisitos que enumeran dependencias para un proyecto. pip es bastante común y ampliamente utilizado por la comunidad de Django, y recomiendo encarecidamente su uso.

Como T. Stone mencionó Pinax, un proyecto basado en Django tiene muchas dependencias y hacen uso de los archivos de requisitos de pip con bastante éxito.

+0

también, si eres nuevo en virtualenv/pip, escribí una introducción aquí: http: // bit.ly/IFx0I – richleland

+0

¡Esta debería ser la respuesta correcta a esta pregunta! – vdboor

Cuestiones relacionadas