2012-06-11 21 views
8

Estoy sumergiéndome en el mundo del empaquetado de aplicaciones Python y logré entrar en este estado de confusión donde mi cabeza empieza a dar vueltas debido a todos los conceptos y opciones que se supone que debo enfrentar.distutils, distutils2, pip y requerimientos

Pregunta:

¿Qué necesito para llevar a cabo? Implementar mi proyecto Python desde el origen ubicado en un servidor git. La herramienta de implementación debe obtener e instalar todas las dependencias, la mayoría de las cuales están disponibles a través de PIP y se debe buscar e instalar a través de Git. El resultado final debe ser instalable a través de la pipa, por lo que se puede hacer algo como:

[~] git clone git://some/path/project.git 
[~] pip install project/ 

Contexto: Actualmente estoy tratando de conseguir Distutils2 hacer lo que quiero, pero parece que setup.py hecho utilizando El comando 'generate-setup' no funciona junto con Pip.

Quería usar Distutils2 ya que se supone que es la prueba más futura de todas. Pero la documentación diversa sobre todas las herramientas es simplemente horrible (información precisa mezclada con información obsoleta e inexacta) de una manera que hace que un hombre cuestione su cordura.

¿Qué debo hacer? Quédate con distutils y setup.py? ¿O necesito echarle un vistazo a algo como Buildout?

Podría el amable respondedor diseñar lo que se supone que debo hacer con una herramienta particular (por ejemplo: implementar su código usando Distutils2, instalar dependencias usando PIP, para las dependencias git escribir un script y pegar todo haciendo XYZ).

Editar: Estoy utilizando Distutils2 1.0a4, que parece ser incompatible con los documentos.

Edit2: Reformateé la pregunta para aclarar de qué se trata mi pregunta.

Edit3: Este es mi cuarto intento de romper la cadena de herramientas de empaquetado y distribución de Python. No estoy tratando de hacer que otras personas hagan mi trabajo por mí, sin embargo, para un novato es casi imposible descifrar qué se supone que debe hacer una herramienta en particular, dónde comienza y dónde termina otra. Especialmente debido a la superposición funcional entre las herramientas. No estoy ubicado en Silicon Valley rodeado de sabios que podrían iniciarme en los secretos y la documentación disponible al público no sirve de nada.

Final Edit: Aunque realmente no estaba pensando en reemplazar virtualenv con Buildout al comenzar esta pregunta. Pero mientras hacía mi investigación, me di cuenta de algo que siempre supe, pero que no vino a mí con total claridad. Hay muchas maneras de automatizar el empaquetado y la implementación de Python. También hay muchas herramientas que pueden ayudarlo a hacer las cosas. Sin embargo, aunque existe una superposición funcional significativa entre las herramientas, la cadena de herramientas está en constante evolución y, hasta el momento, no existe una clara "mejor práctica estándar". La carrera de brazos de la cadena de herramientas de distribución aún está en pleno apogeo y aún no ha surgido un vencedor claro. Esto puede ser confuso para nosotros los noobs, que esperan que la mayor parte de mierda en Python solo funcione. Lo que estaba buscando (distutils/setuptools + pip + virtualenv en forma de Buildout o incluso semi integrado con Buildout) ciertamente es imposible de hacer, pero simplemente no tiene mucho sentido, no porque no sea posible, sino porque nadie lo hace. Si necesita este nivel de sofisticación, entonces necesita comprometerse. Personalmente, he decidido dejar Virtualenv atrás (para este proyecto) y abrazar Buildout.

Respuesta

7

Eche un vistazo a buildout; junto con un complemento de compilación llamado mr.developer, puede armar un sistema de implementación que hará todo lo que usted solicite.

Hay un montón de ejemplos y presentaciones sobre las configuraciones de despliegue en la web, aquí están algunos para comenzar:

+0

Incluso si no era realmente lo que estaba buscando, tu colección de enlaces hizo el truco para finalmente despejar los vacíos vacíos en mi cabeza con respecto a Buildout. Gracias. – JanezStupar

1

No tiene por qué ser difícil instalar y utilizar Jenkins pepita de requirements.txt files para definir los paquetes que necesita su proyecto. Después de eso, puede configurar una compilación en Jenkins para realizar varias tareas, incluida la instalación de los paquetes necesarios. Puede obtener el código fuente de su repositorio e instalar + construir todo el proyecto.

+0

El hecho de que Jenkins pueda instalar un proyecto es un requisito para su propio objetivo: proporcionar pruebas de integración continua. ¡Pero usar Jenkins para las tareas de implementación es una gran cantidad de excesos! ¡Este es un paquete bastante fuerte cuando hay mejores herramientas disponibles! –

+0

[fabric] (http://fabfile.org) podría utilizarse para la implementación – jfs