Pregunta


Estoy intentando crear mi primer sitio en Django y mientras busco aplicaciones de ejemplo en las que inspirarme, constantemente me tropiezo con un término llamado "aplicaciones reutilizables".

Yo entiendo el concepto de una aplicación que es reutilizable es bastante fácil, pero los medios para reutilizar una aplicación en Django están bastante perdidos para mí.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 referencia?

Por lo que tengo entendido, la recomendación es ponerlo en su "PYTHONPATH", pero eso se interrumpe 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 hosting).

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 aplicaciones Django de terceros para que, si implemento mi sitio, el sitio siga funcionando (por ejemplo,¿Lo único con lo que puedo contar es que el proveedor de servicios tenga instalado 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?

¿Fue útil?

Solución

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

  • correr pip install appname, si la aplicación se ha subido a PyPI (hoy en día la mayoría lo son)
  • instalando la aplicación con setup.py install (Esto tiene el mismo resultado que pip install appname, pero requiere que primero descargue y descomprima el código usted mismo;pip hará eso por ti)
  • vincular manualmente el directorio de código al directorio de paquetes de sitio de Python
  • usando software como entorno virtual para crear un "entorno virtual de Python" que tenga su propio directorio de paquetes de sitio y luego ejecutar setup.py install o pip install appname con ese virtualenv activo, o colocando o vinculando simbólicamente la aplicación en los paquetes del sitio del virtualenv (muy recomendable sobre todas las opciones de "instalación global", si valora su cordura futura)
  • colocar la aplicación en algún directorio donde desea colocar varias aplicaciones y luego agregar 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 votación" (por ejemplo) sin obtener un ImportError.

En un servidor donde sólo tienes acceso FTP, tu única opción es realmente la última, y ​​ellos tienen que configurarla por ti.Si afirman apoyar a Django, deben proporcionar alguno lugar donde puede cargar paquetes y estarán disponibles para importar en Python.Sin conocer los detalles de su proveedor de alojamiento web, es imposible decir cómo lo estructuran para usted.

Otros consejos

Una cuestión de edad, pero esto es lo que hago:

Si está utilizando un sistema de control de versiones (VCS), Sugiero poner todas las aplicaciones reutilizables y bibliotecas (incluyendo Django) que las necesidades de software en el VCS. Si no desea que las coloca directamente debajo de la raíz del proyecto, puede modificar settings.py añadir su ubicación a sys.path.

Después de que el despliegue es tan simple como la clonación o la salida a la repositorio VCS a cualquier lugar que desee utilizarlo.

Esto tiene dos ventajas añadidas:

  • desajustes de versión; su software siempre utiliza la versión que probamos con, y no la versión que estaba disponible en el momento del despliegue.
  • Si varias personas trabajan en el proyecto, nadie más tiene que lidiar con la instalación de las dependencias.

Cuando sea el momento para actualizar la versión de un componente, que se actualizará en sus VCS y luego propagar la actualización de sus implementaciones a través de él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top