[2014-10 TL; DR: distribute
está muerto, utilice pip
, el nuevo setuptools
, y, para las distribuciones binarias, wheels
. Más abajo.]
[Respuesta original]
Distribute es fue un tenedor de la mayor setuptools tan casi todos los comentarios que siguen se aplican por igual a Distribuir y setuptools. Setuptools fue un intento de completar una serie de agujeros en el paquete de biblioteca estándar de Python aún más antiguo, Distutils. Setuptools agregó funciones como descargas automáticas de paquetes a través de una interfaz de línea de comandos, easy_install
, y algún nivel de administración de dependencias. Sin embargo, un segmento de la comunidad de Python es de la opinión de que las herramientas de configuración son demasiado intrusivas y tienen demasiada magia detrás de las escenas para algunas de sus características.
pip
es una interfaz de nivel superior encima de las herramientas de configuración o Distribuir. Los usa para realizar muchas de sus funciones pero evita algunas de sus características más controvertidas, como los huevos con cremallera. pip
también proporciona funciones no disponibles en setuptools
, como un comando de desinstalación y la capacidad de definir conjuntos fijos de requisitos y reproducir de forma confiable un conjunto de paquetes. Hay una comparación de características más completa here.
¿Por qué hay tantos componentes (y hay más, como buildout
)? Muchos motivos: las soluciones deben funcionar en todas las plataformas principales en las que se admite Python (es decir, Unix-y, Windows, Mac OS X), por lo que el edificio y la instalación presentan un conjunto de problemas complejo; al igual que muchos proyectos de código abierto, Python es esencialmente todo voluntario y muchos desarrolladores simplemente no están tan interesados en los problemas de embalaje e instalación; existe un conservadurismo natural acerca de agregar nuevas características principales no probadas a la biblioteca estándar; diferencias en opiniones, etc. etc.
Por el momento, hay un proyecto en curso para proporcionar un reemplazo para Distutils y posiblemente para algunos de los complementos de nivel superior. Está previsto que se publique en la biblioteca estándar de Python 3.3 como el paquete packaging
y como un complemento para las versiones anteriores de Python como Distutils2
.
En resumen, la relación actual es:
pip -> [ setuptools | Distribute ] -> Distutils -> Python core
|
3rd party packages | included in Python
|
ACTUALIZACIÓN (2012-07): Antes de la función de código de corte para Python 3.3, se decidió que packaging
aún no estaba lista para su lanzamiento en la biblioteca estándar por lo que se ha eliminado de la versión 3.3. El trabajo continuará en Distutils2
, que está disponible a través de PyPI y en lo que se incluirá en la biblioteca estándar para Python 3.4.
ACTUALIZACIÓN (2014-10): Ha habido más cambios en el mundo de los envases Python ya que esta respuesta fue actualizada por última vez.
Lo más importante, desde mediados de 2013, la brecha entre setuptools
y distribute
se ha curado y actividad de desarrollo has been merged into a new setuptools
project. distribute
ahora es en desuso y ya no se mantiene; utilice el nuevo setuptools
en su lugar pero no use su easy_install
como instalador.
pip
se ha convertido en la herramienta de instalación de-facto y bendita (para Python paquetes no provistos de otra manera por el administrador de paquetes de su plataforma) ya sea dentro o fuera de los entornos virtuales (virtualenv
o pyvenv
).
En lugar de la vieja setuptools
bdist eggs
, wheels
han convertido en el formato distribución binaria bendito por los paquetes de Python.
As of Python 3.4, a version of pip
con wheel
apoyo ahora se envían con los python.org
instaladores binarios oficiales y paquetes fuente y se prevé que pip
También habrá incluido en el next maintenance release of Python 2.7 (2.7.9).
Distutils2
y packaging
están inactivos.
Más detalles en la nueva sección Distributing Python Modules de los Python 3 documentos y la nueva Python Packaging User Guide.
Relacionados: http://stackoverflow.com/questions/6344076/differences-between-distribute-distutils-setuptools-and-distutils2 – guettli