paquetes - ¿Cómo empaco una aplicación de Python para que sea instalable por pip?
pip version (1)
Estoy escribiendo una aplicación django en mi tiempo libre para una competencia de foot-tipping que estamos ejecutando en el trabajo. Pensé que usaría este momento sabiamente y me pondría al día con virtualenv, pip, packaging, django 1.3 y cómo escribir una aplicación fácilmente redistribuible. Hasta aquí todo bien.
Estoy preparado para la parte del embalaje. Muchas de las aplicaciones django en GitHub, por ejemplo, están en su mayoría agrupadas (más o menos) de la misma manera. django-uni-forms como ejemplo.
Una suposición que estoy haciendo es que MANIFEST.in
y setup.py
son las únicas piezas necesarias que pip necesita para hacer su trabajo. ¿Es eso correcto? ¿Qué otros componentes son necesarios si mi suposición es incorrecta?
¿Los archivos de empaque necesarios generalmente se generan o están hechos a mano? ¿Pueden describirse las dependencias y luego instalarse también? Mi aplicación depende de django-uni-forms
, y la tengo lista en un archivo requirements.txt
dentro de mi aplicación que utilicé para instalar la dependencia; pero, ¿es eso algo de lo que el sistema de embalaje puede encargarse?
¿Cuáles son los pasos que debo seguir para empaquetar mi aplicación de modo que pip pueda instalarla y cualquier dependencia?
Sí, MANIFEST.in
y setup.py
deberían ser suficientes.
Esta publicación del blog realmente tiene buena información sobre este tema: empaquetar una aplicación reutilizable de Django
Y aquí hay otra visión general buena y detallada que me ayudó mucho: Guía del usuario de Python Packaging
Especialmente los consejos para obtener sus archivos estáticos (plantillas) incluidos son importantes ya que esto podría no ser obvio al principio.
Y sí, puede especificar los paquetes necesarios en su setup.py
que se recuperan automáticamente al instalar su aplicación.
Por ejemplo:
install_requires = [
''django-profiles'',
''django-uni-forms'',
],
Obviamente, ahora tenemos dos lugares donde las dependencias están definidas, pero eso no significa necesariamente que esta información esté duplicada: setup.py vs requirements.txt
Con esta configuración, su paquete debe ser instalable a través de pip
.
Como señaló Pierre en los comentarios, ahora también hay una sección relevante en la documentación oficial de Django: empaquetar su aplicación
Y luego está esta guía "completamente incompleta", que realmente da una gran visión general sobre el empaquetado y la carga de un paquete a PyPI: Compartiendo su labor de amor: PyPI rápida y sucia