Embalaje Python: ruedas vs tarball (tar.gz)

La ventaja de las ruedas sobre los huevos es clara (consulte la 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 repository 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)

Esto lo respondí por mí (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 que los sistemas de configuración y herramientas de configuración, ejecutando código arbitrario para comstackr e instalar, y comstackr nuevamente, codifique 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 proporcionando una interfaz más simple entre el sistema de comstackción y el instalador. El formato del paquete binario de la rueda libera a los instaladores de tener que conocer el sistema de comstackción, ahorra tiempo al amortizar el tiempo de comstackción en muchas instalaciones y elimina la necesidad de instalar un sistema de comstackció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 lo que se conoce como “sdists” arriba.

De ruedas de python

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 comstackdor 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 en plataformas y máquinas.

Asegúrese de que la rueda esté instalada.

 pip install wheel