PDF de programación - Distribución de módulos Python

Imágen de pdf Distribución de módulos Python

Distribución de módulos Pythongráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.006 visualizaciones desde el 14 de Enero del 2017
86,7 KB
19 paginas
Creado hace 23a (08/12/2000)
Distribución de módulos Python

Greg Ward

8 de diciembre de 2000

E-mail: [email protected]

Este documento describe las Herramientas de Distribución de Python (“Distutils”) desde el punto de vista del de-
sarrollador de módulos. Describe cómo utilizar las Distutils para hacer que los módulos y extensiones de Python
fácilmente accesibles a una amplia audiencia haciendo más automático el proceso de compilar/liberar/instalar.

Resumen

Índice General

1

Introducción

2 Conceptos y terminología
.
2.1 Un ejemplo simple .
2.2 Terminología general de Python . . .
2.3 Terminología específica de Distutils
.

.

.

.

.

.

.

.

.

.
.
.

. .
.
.
.
.

3 Escritura del guion de instalación

.
3.1 Enumeración de paquetes completos .
.
3.2 Enumeración de módulos individuales .
.
3.3 Descripción de los módulos de extensión .
.
.
.
.

Nombre de extensiones y de paquetes
Ficheros fuente de extensión .
.
.
Opciones del preprocesador .
.
Opciones de bibliotecas .
.
.

.
.
.
.
. . .

.
.
.
.

.
.
.

.

.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.
.

.
.
.

.
.
. .
.
.

.
.
.
.
.
.
. .

.
.
.
.
.
.
.
.
. .
. .
.

.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

4 Escritura del fichero de configuración de la instalación

5 Creación de una distribución de fuentes

5.1 Especificación de los ficheros a distribuir
5.2 Opciones relativas al manifiesto .
.

.

.

.
.

.

6 Creación de distribuciones binarias

6.1 Creación de distribuciones compiladas bobas
.
6.2 Creación de paquetes RPM .
.
6.3 Creación de instaladores de Windows
.

.
.

.
.

.

.

.

.

7 Ejemplos

7.1 Distribución Python pura (por módulo) .
7.2 Distribución Python pura (por paquete)
.
7.3 Módulo de extensión simple .
.
. . .
7.4 Módulos de extensión múltiples
7.5 Todo junto .
.
.

. .

.
.
.

.

.

.

.

.

.

.

.

.

.

.

.

.
.
.
.
.

.
.
.
.
.

.
.

.
.

.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.

.
.

.
.
. .

.
.
. .
.
.

.
.
.

.
.
.

.
.
.
.
.

.
.
.
.
. .
.
.

.
.
.
. .
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.
.
. .

.
.
.

. .
.
.
.
.
.
.

.
. .
. .
. .
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.

. .
.
.

.
.
.
.
. .

.
.
.

. .
.
.
.
.

.
. .
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.
.
.

.
.

. .
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.
.
.
.
. .

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

. .
.
.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.
.
.

.
.
.

.
.
.
.
.
.
.

.
.

.
.
.

.
.
.

.
.
.

. .
. .
. .

.
.
.
.
.
.
.
.
. .
.
. .

. .
.

. .
.
. .
.
. .
.
.
. .
. . .
. .
. .

.
.

.
.

.
.

. .
. .

.
.
. .
.
.

.
.
. .
.
.

. .
. .
. .

.
.
.
.
.

.
.
.
.
.

.
.

. .
.
. .
.
. . . .
. .
.
.
. .

.
.

2

2
3
4
5

5
6
6
7
7
8
8
9

10

12
12
14

14
16
16
18

18
18
18
18
18
18

8 Extensión de las Distutils

8.1 Extensión de órdenes existentes
8.2

.
Implementación de nuevas órdenes . .

.

.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

. .
. .

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

.
.

. . .
.
. .

9 Referencia

.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.
.
.

9.2

.
.
. .
.

.
.
.
. .

.
.
. .
.
.

. .
.
.
.
.
.
.

9.1 Compilación de módulos: la familia de órdenes build .
.
.
.
.

.
.
.
.
.
build .
.
.
.
.
build_py .
.
.
.
build_ext .
.
.
.
build_clib .
.
.
Instalación de módulos: la familia de órdenes install .
.
.
.
install_lib .
.
. .
.
.
install_data .
.
. .
.
install_scripts .
.
.
.
.
9.3 Acciones de limpieza: la orden clean .
.
.
9.4 Creación de una distribución de fuentes: la orden sdist .
.
9.5 Creación de una distribución compilada: la familia de órdenes bdist .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
.
.

.
.
.
.
. . .

.
.
.
.
. .
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

.
.
.
.

.
.
.

.
.
.
.

.
.
.

.
.
.
.

.
.
.
.

.
.
.

.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.

18
18
18

18
18
18
18
18
18
18
18
18
18
19
19
19
19
19
19
19

.

.

.
.
. .
. .

.
.
. .
. .

.
.
. .
. .

.
.
. . . .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.

.
.
. .
. .
. .
. . . .

. .
. .
. .
. . .
. .
. .
. .
. .
. .
.
. .
.
.
.
.
.
. .
.
.
.
. .
.
.
.
.
.
.
.
.
. .
.
. .
.
.
.
.
.
.
. .
.
.
.
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
. .
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
.
. .
.
.
.
.
.
.
. .
.
.
.
.
.
.
.
.
. .
.
.
. .
. .
. .
. .
. . .
. .
.
. .
.
.
. .

. . . .
.
.
. . . .

. .
.
.
.
.
. .
. .

. .
.
.
. .

. .
.
.
. .

. .
.
.
. .

. .

.

.

.

.
blib .
blib_dumb .
blib_rpm .
.
blib_wise .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

. .
.
.
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
. .
. .
. .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

1 Introducción

Hasta ahora, los desarrolladores de módulos de Python no disponían de mucha infraestructura para la distribución de
módulos, ni los usuarios de Python de soporte para instalar y mantener módulos de terceras partes. Con la introducción
de las Herramientas de Distribución de Python (“Distutils” para abreviar) en Python 1.6, esta situación empezará a
mejorar.

Este documento sólo cubre el uso de Distutils para distribuir tus módulos de Python. El uso de Distutils no te ata
a Python 1.6 o superiores, sin embargo. Las Distutils funcionan perfectamente con Python 1.5.2 y es razonable (se
espera que común) que los usuarios de Python descarguen e instalen por separado las Distutils para poder instalar tus
módulos. Los usuarios de Python 1.6 (o superiores), por supuesto, no tendrán que añadir nada a su distribución de
Python para usar las Distutils en la instalación de módulos de terceros.

Este documento se concentra en el papel del desarrollador/distribuidor. Si buscas información sobre la instalación de
módulos de Python, deberías consultar el manual Instalación de módulos de Python.

2 Conceptos y terminología

El uso de las Distutils es bastante simple,
tanto para los desarrolladores de módulos como para los usua-
rios/administradores que han de instalar módulos de terceros. Como desarrollador, tus responsabilidades (¡además
de escribir código fiable, bien documentado y probado, por supuesto!) son:

• escribir un guion de instalación (‘setup.py’ por convención)
• (opcional) escribir un fichero de configuración de la instalación
• crear una distribución de código fuente
• (opcional) crear una o más distribuciones compiladas (binarias)

2

2 Conceptos y terminología

En este documento está cubierta cada una de estas tareas.

No todos los desarrolladores de módulos tienen acceso a varias plataformas, por lo que no siempre es factible esperar
que creen varias distribuciones binarias. Se espera que aparecerán intermediarios (los empaquetadores) para cubrir
esta necesidad. Los empaquetadores tomarán las distribuciones de código fuente liberadas por los desarrolladores de
módulos, las compilarán en una o varias plataformas y liberarán las distribuciones binarias resultantes. De este modo,
los usuarios de las plataformas más comunes serán capaces de instalar las distribuciones de módulos de Python más
extendidas del modo más natural en su plataforma, sin tener que ejecutar un solo guion ni compilar una línea de código.

2.1 Un ejemplo simple

El guion de instalación suele ser bastante simple, aunque, por estar escrito en Python, no hay límites arbitrarios sobre
lo que se puede hacer con él.1 Si sólo quieres distribuir un módulo denominado foo, contenido en un fichero ‘foo.py’,
tu guion de instalación puede reducirse a esto:

from distutils.core import setup
setup (name = "foo",

version = "1.0",
py_modules = ["foo"])

Observaciones:

• la mayoría de la información que se proporciona a las Distutils va en forma de argumentos clave a la función

setup()

• dichos argumentos pertenecen a dos categorías: meta-datos del paquete (nombre, número de versión) e informa-

ción sobre lo contenido en el paquete (una lista de módulos en Python puro, en este caso)

• los módulos se especifican por nombre de módulo, no nombre de fichero (esto se aplica también a los paquetes

y extensiones)

• se recomienda que proporciones más meta-datos, en particular tu nombre, dirección electrónica de correo y un

URL del proyecto (consulta la sección 3 si quieres ver un ejemplo)

Para crear una distribución de código fuente para este módulo, crearías un guion de instalación, ‘setup.py’, que contu-
viera el código anterior, y lo ejecutarías:

python setup.py sdist

lo que crearía un fichero comprimido (por ejemplo, un fichero tar de Unix, un zip en Windows) que contendría tu guion
de instalación, ‘setup.py’ y tu módulo, ‘foo.py’. El fichero se llamaría ‘Foo-1.0.tar.gz’ (o ‘.zip’) y se desempaquetaría
en un directorio ‘Foo-1.0’.

Si un usuario/a desea instalar tu módulo foo module, sólo tiene que descargar ‘Foo-1.0.tar.gz’ (o ‘.zip’), desempaque-
tarlo y, desde el directorio ‘Foo-1.0’, ejecutar

python setup.py install

lo que finalmente copiaría ‘foo.py’ al directorio adecuado para módulos de terceros en su instalación de Python.

Este sencillo ejemplo muestra algunos conceptos fundamentales de las Distutils: Primero, tanto los desarrolladores
como los instaladores tienen la misma interfaz de usuario básica, el guion de instalación. La diferencia radica en qué
1Pero modérate respecto a poner operaciones arbitrariamente costosas en el guion de instalación. Al contrario de los guiones del tipo de autoconf
[N. del T.: autoconf es la herramienta de GNU de configuración multiplataforma], es posible que
  • Links de descarga
http://lwp-l.com/pdf679

Comentarios de: Distribución de módulos Python (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad