Una ``distribución compilada'' se corresponde con los nombres comunes de ``paquete binario'' o ``instalador'' (dependiendo de tu bagaje cultural). No es necesario que sea binaria, sin embargo, porque es posible que sólo contenga código fuente de Python o bytecode. No lo llamamos paquete porque la palabra ya estaba tomada para otra cosa en Python. Instalador es un término específico de Windows. ** do Mac people use it? **
Una distribución compilada es la manera de facilitar más las cosas a los instaladores de la distribución de módulos: para los usuarios de Linux basado en RPM, es un RPM binario; para los usuarios de Windows, un instalador ejecutable; para los usuarios de Debian, un paquete Debian, etc. Por supuesto, nadie será capaz de generar distribuciones para todas las plataformas habidas y por haber, por lo que las Distutils están diseñadas para permitir que los diseñadores de módulos se concentren en su especialidad, escribir código y generar las distribuciones de fuentes, mientras surge una especie nueva, los empaquetadores, para convertir las distribuciones de fuentes en distribuciones para tantas plataformas como sea posible.
Por supuesto, el desarrollador de módulos puede ser su propio
empaquetador. Podría ser un voluntario ``de por ahí'' que tuviera acceso
a una plataforma a la que no tiene acceso el desarrollador original. Podría,
incluso, ser software que periódicamente recopilase las distribuciones de
fuentes y las compilase de tantos modos como fuera posible.
Independientemente de la especie de la bestia en cuestión, un empaquetador
usa el guion de configuración y la familia de órdenes bdist
para generar distribuciones compiladas.
Por ejemplo, si ejecuto la siguiente orden en el árbol de fuentes de las Distutils:
python setup.py bdist
Por lo tanto, la orden anterior, en un sistema Unix, genera
Distutils-0.9.1.plat.tar.gz; descomprimiendo el tar
en el sitio correcto se instalan las Distutils, tal y como si se hubiera
descargado la distribución de fuentes y se hubiera ejecutado
python setup.py install
. El sitio correcto es la raíz del sistema
de archivos o el directorio prefix de Python, dependiendo de
las opciones pasadas a la orden bdist_dumb
;
por omisión se generan distribuciones bobas relativas a prefix.
Por supuesto, en el caso de las distribuciones de Python puras, esto no supone una ventaja sustancial, pero para las distribuciones no puras, puede suponer el salto entre que alguien sea capaz de usar tus extensiones o no lo sea. Y generar distribuciones compiladas ``listas'', como los paquetes RPM o los instaladores ejecutables de Windows, facilita enormemente las cosas incluso si la distribución no incluye extensiones.
La orden bdist
tiene una opción --formats,
parecida a la orden sdist
, que se puede usar para elegir
los tipos de distribución compilada a generar: por ejemplo,
python setup.py bdist --format=zip
Los formatos disponibles para distribuciones compiladas son:
Formato | Descripción | Notas |
---|---|---|
fichero tar gzipeado (.tar.gz) | (1),(3) | |
fichero tar comprimido (.tar.Z) | (3) | |
fichero tar (.tar) | (3) | |
fichero zip (.zip) | (4) | |
RPM | (5) | |
RPM de fuentes | (5) ** to do! ** | |
fichero ZIP autoextraíble para Windows | (2),(6) |
Notas:
rpm -version
para averiguar qué versión tienes)
bdist_wininst
? **
No es necesario usar la orden bdist
con la opción
--formats, también se puede usar la orden que implementa
directamente el formato deseado. Algunos de estas ``sub-órdenes''
bdist
generan varios formatos similares; por ejemplo, la orden
bdist_dumb
genera todos los formatos de archivo
``bobos'' (tar
, ztar
, gztar
y
zip
) y bdist_rpm
genera los RPMs binarios y de fuentes.
Las sub-órdenes bdist
y los formatos que genera cada una son:
Orden | Formatos |
---|---|
tar, ztar, gztar, zip | |
rpm, srpm | |
wininst |
Las siguientes secciones proporcionan detalles de las diferentes
órdenes bdist_*
.