index - python packaging
Embalaje Python: ruedas vs tarball(tar.gz) (2)
La ventaja de las ruedas sobre los huevos es clara (ver sección ¿por qué no huevo? https://pypi.python.org/pypi/wheel ).
Sin embargo, no está del todo claro para mí cuál es la ventaja de usar ruedas sobre tar.gz
Puede que me falte algo obvio como "son lo mismo". Como veo, ambos pueden instalarse directamente usando pip
(incluso en Windows), tienen un tamaño similar y cuando el empaque requiere un esfuerzo similar. Me parece que es el tipo de preguntas que puede obtener al justificar una metodología de empaquetado.
EDIT: Acabo de encontrar un ejemplo donde tar.gz
podría ser mejor que las ruedas. CherryPy ( https://pypi.python.org/pypi/CherryPy ) proporciona ruedas solo para Python 3.x, por lo que si desea tener un repositorio local para servir CherryPy para las dependencias de Python 2.7 y 3.x, parece que Más sentido para almacenar el tarball. ¿Es esto correcto? (solo para agregar un par de justificaciones "basadas en casos" a la discusión)
Ventajas de las ruedas.
• Instalación más rápida para Python puro y paquetes de extensión C nativos.
• Evita la ejecución de código arbitrario para la instalación. (Evita setup.py)
• La instalación de una extensión C no requiere un compilador en Windows u OS X.
• Permite un mejor almacenamiento en caché para las pruebas y la integración continua.
• Crea archivos .pyc como parte de la instalación para garantizar que coincidan con el intérprete de python utilizado.
• Instalaciones más consistentes a través de plataformas y máquinas.
Asegúrese de que la rueda esté instalada.
pip install wheel
Esto me lo contestó (directamente desde la rueda PEP):
Python necesita un formato de paquete que sea más fácil de instalar que sdist. Los paquetes sdist de Python están definidos por y requieren los sistemas de configuración y herramientas de configuración de los sistemas, ejecutando código arbitrario para compilar e instalar, y compilar nuevamente el código para que pueda instalarse en un nuevo virtualenv. Este sistema de combinación de construcción e instalación es lento, difícil de mantener y dificulta la innovación tanto en los sistemas de construcción como en los instaladores.
La rueda intenta solucionar estos problemas al proporcionar una interfaz más simple entre el sistema de compilación y el instalador. El formato del paquete binario de la rueda libera a los instaladores de tener que conocer el sistema de compilación, ahorra tiempo al amortizar el tiempo de compilación en muchas instalaciones y elimina la necesidad de instalar un sistema de compilación en el entorno de destino.
https://www.python.org/dev/peps/pep-0427/#rationale
Tenga en cuenta que los tarballs de los que estamos hablando son los que se denominan "sdists" más arriba.