python django code-reuse

python - Cómo reutilizar una aplicación reutilizable en Django



code-reuse (2)

Intento crear mi primer sitio en Django y como estoy buscando aplicaciones de ejemplo para inspirarme, constantemente tropiezo con un término llamado "aplicaciones reutilizables" .

Comprendo que el concepto de una aplicación que se puede volver a usar es bastante fácil, pero los medios para reutilizar una aplicación en Django ya no los tengo. Algunas preguntas que me molestan en todo el negocio son:

¿Cuál es la forma preferida de reutilizar una aplicación Django existente? ¿Dónde lo pongo y cómo lo hago referencia?

Por lo que entiendo, la recomendación es ponerlo en su "PYTHONPATH", pero se rompe tan pronto como necesito implementar mi aplicación en una ubicación remota a la que tengo acceso limitado (por ejemplo, en un servicio de alojamiento).

Entonces, si desarrollo mi sitio en mi computadora local y tengo la intención de implementarlo en un ISP donde solo tengo acceso ftp, ¿cómo reutilizo las aplicaciones de Django de terceros para que, si implemente mi sitio, el sitio siga funcionando (por ejemplo, Lo único con lo que puedo contar es que el proveedor de servicios tiene instalados Python 2.5 y Django 1.x.

¿Cómo organizo mi proyecto Django para poder implementarlo fácilmente junto con todas las aplicaciones reutilizables que quiero usar?


En general, lo único que se requiere para usar una aplicación reutilizable es asegurarse de que esté en sys.path , para que pueda importarla desde el código de Python. En la mayoría de los casos (si el autor sigue las mejores prácticas), el tarball o paquete reutilizable de la aplicación contendrá un directorio de nivel superior con documentos, un setup.py README, un setup.py y luego un subdirectorio que contenga la aplicación real (consulte django-voting para un ejemplo: la aplicación en sí está en el subdirectorio "votación"). Este subdirectorio es lo que debe colocarse en su ruta de Python. Los posibles métodos para hacerlo incluyen:

  • ejecutando el nombre de la aplicación pip install appname , si la aplicación se ha subido a PyPI (en estos días la mayoría)
  • instalar la aplicación con la setup.py install (esto tiene el mismo resultado que el nombre de la aplicación pip install appname , pero requiere que primero descargue y descomprima el código usted mismo, pip lo hará por usted)
  • enlace simbólico manual del directorio de código a su directorio Python site-packages
  • usando software como virtualenv para crear un "entorno virtual de Python" que tenga su propio directorio de paquetes de sitio, y luego ejecute setup.py install o pip install appname con ese virtualenv activo, o coloque o enlace simbólico de la aplicación en los paquetes de sitio de virtualenv ( altamente recomendado sobre todas las opciones de "instalación global", si valoras tu cordura futura)
  • colocando la aplicación en algún directorio donde pretendas colocar varias aplicaciones, y luego agregando ese directorio a la variable de entorno PYTHONPATH

Sabrá que lo tiene en el lugar correcto si puede activar un intérprete de Python e "importar la votación" (por ejemplo) sin obtener un ImportError.

En un servidor donde solo tiene acceso FTP, su única opción es realmente la última y deben configurarse por usted. Si afirman que son compatibles con Django, deben proporcionar un lugar donde puedan cargar paquetes y estarán disponibles para su importación en Python. Sin conocer los detalles de su servidor web, es imposible decir cómo estructuran eso para usted.


Una vieja pregunta, pero esto es lo que hago:

Si está utilizando un sistema de control de versiones (VCS), le sugiero que coloque todas las aplicaciones y bibliotecas reutilizables (incluido django) que su software necesita en el VCS. Si no quiere ponerlos directamente debajo de la raíz de su proyecto, puede modificar settings.py para agregar su ubicación a sys.path.

Después de eso, la implementación es tan simple como clonar o verificar el repositorio de VCS donde quiera que lo use.

Esto tiene dos beneficios adicionales:

  • La versión no coincide; su software siempre usa la versión con la que lo probó, y no la versión que estaba disponible en el momento de la implementación.
  • Si varias personas trabajan en el proyecto, nadie más tiene que ocuparse de instalar las dependencias.

Cuando llegue el momento de actualizar la versión de un componente, actualícela en su VCS y luego propague la actualización a sus implementaciones a través de ella.