2010-07-24 20 views
108

Soy un desarrollador java/principiante python, y me faltan mis características maven, particularmente administración de dependencias y automatización de compilación (me refiero a que no compila, ¿pero cómo crear un paquete para implementación?)Equivalente a Maven para python

¿Hay un equivalente de Python para lograr estas características?
Nota: uso python 2.x

Gracias.

Respuesta

52

Python usa distutils y setuptools para dependencia y empaquetado.

Heres un tutorial que explica conceptos básicos: http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html

En resumen, usted tendrá el archivo setup.py, que tiene información de dependencia y el guión de compilación/instalación, y se puede construir huevos, bolas de alquitrán Dist, bolas de alquitrán binarios, etc. con eso.

+5

Dado que Mark Kristin, quien falleció mucho electro-cerró, cerró ese sitio, aquí está el mirror en [activestate] (http://docs.activestate.com/activepython/3.2/diveintopython3/html/packaging.html). – jiggy

+1

Recomiendo actualizar esto para apuntar a [The Python Packaging User Guide] (https://python-packaging-user-guide.readthedocs.io/en/latest/) ya que es la guía autorizada ahora. – kojiro

8

Para el despliegue, además de distutils/setuptoos, también eche un vistazo a pip package (usa setuptools debajo). Puede deshacer instalaciones fallidas y también desinstalar (algo que falta en easy_install/setuptools). Además, puede especificar dependencias a través de un archivo de texto de requisitos.

5

Es bueno usar virtualenv para crear un entorno de proyecto independiente y usar pip/easy_install para las dependencias de gestión.

+1

Eso es triste:) – reversiblean

32

No hay ninguna coincidencia directa. Sin embargo, lo más cerca que puede llegar:

  • zc.buildout: Puede configuración cerrada ambientes, descargar/manejar dependencias, inicializar guiones, etc. También se basa en los plugins (o "recetas", como los llaman). Lo usé hace unos años cuando estaba en etapas beta, probablemente ha evolucionado desde entonces. Hay una curva de aprendizaje, como con Maven, pero también es la más poderosa.

Otras ofertas son subconjuntos de Maven/zc.buildout:

Y ou probablemente sabe scripts Ant y concha, para que pudiera comprobar también estas herramientas Python:

  • Fabric o Paver: corredores de tareas de línea de comandos con sabores añadidos. Envuelven la ejecución tradicional de la línea de comandos en python y permiten administrar varias tareas de una manera más poderosa (dependencias de tareas, interpretación de salida, ejecución de comandos en un servidor remoto, etc.). Básicamente, no se puede hacer nada con scripts de shell, pero en python, es mucho menos críptico.
11

Me gustaría señalar PyBuilder que está fuertemente inspirado en maven, pero utiliza python en lugar de XML para la configuración, por lo que es realmente legible, en mi humilde opinión.

Hay un complemento para la administración de dependencias (utiliza pip bajo el capó y diferencia entre las dependencias de compilación y de tiempo de ejecución) y, a diferencia de maven, puede ejecutar el ciclo de vida de compilación completo con un solo comando.