it-swarm.dev

Python embalaje: 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. Podría estar perdiendo algo obvio como "son lo mismo". Según veo, ambos se pueden instalar directamente usando pip (incluso en Windows), tienen un tamaño similar y cuando el empaquetado requiere un esfuerzo similar. A mí me parece el tipo de preguntas que podrías tener al justificar una metodología de empaque.

EDITAR: Acabo de encontrar un ejemplo donde tar.gz podría ser mejor que las ruedas. CherryPy ( https://pypi.python.org/pypi/CherryPy ) proporciona ruedas para Python 3.x solamente, así que si quieres tener un repositorio local para servir CherryPy para Python 2.7 y dependencias 3.x, parece tener más sentido almacenar el tarball. ¿Es esto correcto? (solo para agregar un par de justificaciones "basadas en casos" a La discusión)

29
zom-pro

Esto me respondió (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 se definen y requieren los sistemas de compilación distutils y setuptools, que ejecutan código arbitrario para compilar e instalar y volver a compilar el código solo para que pueda instalarse en un nuevo virtualenv. Este sistema de construcción-instalación combinada es lento, difícil de mantener e impide la innovación tanto en los sistemas de construcción como en los instaladores.

Wheel intenta solucionar estos problemas proporcionando una interfaz más simple entre el sistema de compilación y el instalador. El formato de 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" arriba.

15
brk3

De Ruedas de Python

Ventajas de las ruedas

• Instalación más rápida para puro python 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 asegurar que coincidan con el intérprete python utilizado.
• Instalaciones más consistentes en plataformas y máquinas.

Asegúrese de que la rueda esté instalada.

pip install wheel
3
karel