9

Solía ​​ser un desarrollador de Java y utilizamos herramientas como ant o maven para gestionar nuestros entornos de desarrollo/pruebas/UAT de forma estandarizada. Esto nos permitió manejar dependencias de bibliotecas, establecer variables de SO, compilar, implementar, ejecutar pruebas unitarias y todas las tareas requeridas. Además, los scripts generados garantizaban que todos los entornos estuvieran casi igualmente configurados, y todos los miembros del equipo realizaron todas las tareas de la misma manera.Herramienta (o combinación de herramientas) para entornos reproducibles en Python

Estoy empezando a trabajar en Python ahora y me gustaría su consejo sobre qué herramientas debería usar para lograr lo mismo que se describe para Java.

Respuesta

18
  1. virtualenv para crear un entorno virtual contenida (evitar que las diferentes versiones de los paquetes de Python o pitón de pisar fuerte el uno del otro). Cada vez hay más personas que se mueven hacia esta herramienta. El autor es el mismo que el anterior working-env.py mencionado por Aaron.

  2. pip para instalar paquetes dentro de un virtualenv. Lo tradicional es easy_install como lo responde S. Lott, pero pip funciona mejor con virtualenv. easy_install todavía tiene características que no se encuentran en pip embargo.

  3. scons como herramienta de compilación, aunque no lo necesitarás si te quedas solo con Python.

  4. Fabric pegar, o paver para la implementación.

  5. buildbot para la integración continua.

  6. Bazaar, mercurial o git para control de versiones.

  7. Nose como una extensión para probar la unidad.

  8. PyFit para FIT pruebas.

+0

+1 virtualenv. Además, use virtualenvwrapper. – hughdbrown

2

¿Aparte de easy_install?

Para nuestros servidores Linux, usamos easy_install y yum.

Para nuestras computadoras portátiles de desarrollo Windows, utilizamos easy_install y algunos MSI para algunos proyectos.

La mayoría de las bibliotecas de Python que utilizamos son de solo fuente, por lo que podemos usar la misma distribución en todos los cuadros. Si pudiéramos tener un dispositivo compartido de red, los pondríamos todos allí. Lamentablemente, nuestra infraestructura está algo dispersa, por lo que debemos mover archivos .TAR o volver a realizar las instalaciones para reconstruir los entornos.

En algunos casos (por ejemplo, PIL), tenemos que volver a compilar y verificar los números de versión.

2

Querrá easy_setup para obtener los huevos (más o menos lo que Maven llama un artefacto).

Para configurar el entorno, echar un vistazo a working-env.py

Python no se compila pero puede poner todos los archivos de un proyecto en un huevo. Esto se hace con setuptools

Para CI, marque this answer.

0

Hago exactamente esto con una combinación de setuptools y Hudson. Sé que Hudson es una aplicación java, pero puede ejecutar cosas de Python sin problemas.

2

Seríamos negligentes por no mencionar también Paver, que fue creada por Kevin Dangoor de TurboGears fama. El proyecto todavía está en alfa, pero parece muy prometedor. Un fragmento de la página del proyecto:

Paver es una herramienta de scripting basada en Python/distribución/implementación a lo largo de las líneas de Make o Rake. Lo que hace que Paver sea único es su integración con las bibliotecas de Python comúnmente utilizadas. Las tareas comunes que eran fáciles antes siguen siendo fáciles. Lo que es más importante, ahora es mucho más fácil lidiar con las necesidades y los requisitos específicos de sus aplicaciones.

0

Es posible que desee consultar nuestro Devenv. Le permite estandarizar los entornos de compilación para desarrollo, QA y UAT. Es gratis como en "cerveza gratis".

HTH

Cuestiones relacionadas