Maven equivalente para python [cerrado]

146

Soy un desarrollador Java / principiante de Python, y me faltan las características de Maven, particularmente la gestión de dependencias y la automatización de compilación (quiero decir que no compila, pero ¿cómo crear un paquete para la implementación?)

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

Gracias.

Enno Shioji
fuente

Respuestas:

70

Python usa distutils y setuptools para la dependencia y el empaquetado.

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

En resumen, tendrá el archivo setup.py, que tiene información de dependencia y compilación de scripts / instalación, y puede construir huevos, tarballs dist, tarballs binarios, etc.

Daniel Kluev
fuente
66
Dado que Mark Pilgrim, que se ha marchado por la electricidad, cerró ese sitio, aquí hay un espejo en el estado activo .
jiggy
2
Recomiendo actualizar esto para que apunte a la Guía del usuario de Python Packaging ya que ahora es la guía autorizada.
kojiro
38

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

  • zc.buildout : puede configurar entornos cerrados, descargar / manejar dependencias, inicializar scripts, etc. También se basa en complementos (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:

Probablemente conozca las secuencias de comandos Ant y shell, por lo que puede consultar también estas herramientas de Python:

  • Fabric o Paver : corredores de tareas de línea de comandos con sabores añadidos. Envuelven su ejecución tradicional de línea de comandos en python y permiten administrar varias tareas de una manera más poderosa (dependencias de tareas, interpretación de resultados, ejecución de comandos en un servidor remoto, etc.). Básicamente no hay nada que no puedas hacer con los scripts de shell, pero en Python, es mucho menos críptico.
Tuukka Mustonen
fuente
14

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

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

usuario245678
fuente
9

Para la implementación, además de distutils / setuptoos, también eche un vistazo al paquete pip (usa las herramientas de configuración debajo). Puede deshacer las 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.

ars
fuente
6

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

Ning Sun
fuente
77
Eso es triste
:)