Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
3Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Distribución de módulos Python

Distribución de módulos Python

Ratings: (0)|Views: 530|Likes:
Published by Aprender Libre
Este documento describe las Herramientas de Distribución de Python (“Distutils”) desde el punto de vista del desarrollador
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.
Este documento describe las Herramientas de Distribución de Python (“Distutils”) desde el punto de vista del desarrollador
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.

More info:

Published by: Aprender Libre on Apr 26, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See More
See less

06/05/2013

pdf

text

original

 
Distribución de módulos Python
Greg Ward
8 de diciembre de 2000E-mail:
gward@python.net
Resumen
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 Pythonfácilmente accesibles a una amplia audiencia haciendo más automático el proceso de compilar/liberar/instalar.
Índice General
1 Introducción22 Conceptos y terminología2
2.1 Un ejemplo simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Terminología general de Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Terminología específica de Distutils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Escritura del guion de instalación5
3.1 Enumeración de paquetes completos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Enumeración de módulos individuales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.3 Descripción de los módulos de extensión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Nombre de extensiones y de paquetes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Ficheros fuente de extensión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Opciones del preprocesador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Opciones de bibliotecas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Escritura del fichero de configuración de la instalación105 Creación de una distribución de fuentes12
5.1 Especificación de los ficheros a distribuir. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.2 Opciones relativas al manifiesto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
6 Creación de distribuciones binarias14
6.1 Creación de distribuciones compiladas bobas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.2 Creación de paquetes RPM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.3 Creación de instaladores de Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7 Ejemplos18
7.1 Distribución Python pura (por módulo). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187.2 Distribución Python pura (por paquete). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187.3 Módulo de extensión simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187.4 Módulos de extensión múltiples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187.5 Todo junto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
 
8 Extensión de las Distutils18
8.1 Extensión de órdenes existentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188.2 Implementación de nuevas órdenes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
9 Referencia18
9.1 Compilación de módulos: la familia de órdenes
build
. . . . . . . . . . . . . . . . . . . . . . . . . 18
build
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
build_py
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
build_ext
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
build_clib
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.2 Instalación de módulos: la familia de órdenes
install
. . . . . . . . . . . . . . . . . . . . . . . . 18
install_lib
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
install_data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
install_scripts
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189.3 Acciones de limpieza: la orden
clean
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199.4 Creación de una distribución de fuentes: la orden
sdist
. . . . . . . . . . . . . . . . . . . . . . . . 199.5 Creación de una distribución compilada: la familia de órdenes
bdist
. . . . . . . . . . . . . . . . . 19
blib
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
blib_dumb
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
blib_rpm
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
blib_wise
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1 Introducción
Hasta ahora, los desarrolladores de módulos de Python no disponían de mucha infraestructura para la distribución demódulos, ni los usuarios de Python de soporte para instalar y mantener módulos de terceras partes. Con la introducciónde las Herramientas de Distribución de Python (“Distutils” para abreviar) en Python 1.6, esta situación empezará amejorar.Este documento sólo cubre el uso de Distutils para distribuir tus módulos de Python. El uso de Distutils no te ataa Python 1.6 o superiores, sin embargo. Las Distutils funcionan perfectamente con Python 1.5.2 y es razonable (seespera que común) que los usuarios de Python descarguen e instalen por separado las Distutils para poder instalar tusmódulos. Los usuarios de Python 1.6 (o superiores), por supuesto, no tendrán que añadir nada a su distribución dePython 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 demó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 dulos como para los usua-rios/administradores que han de instalar módulos de terceros. Como desarrollador, tus responsabilidades (¡ademásde 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 esperarque creen varias distribuciones binarias. Se espera que aparecerán intermediarios (los
empaquetadores
) para cubriresta necesidad. Los empaquetadores tomarán las distribuciones de código fuente liberadas por los desarrolladores demó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ásextendidas 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 sobrelo 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 setupsetup (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 paquetesy extensiones)
se recomienda que proporciones más meta-datos, en particular tu nombre, dirección electrónica de correo y unURL 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 guionde 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íaen 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 desarrolladorescomo los instaladores tienen la misma interfaz de usuario básica, el guion de instalación. La diferencia radica en qué
1
Pero 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 el guion de instalación se ejecute varias veces enel curso de la compilación e instalación de la distribución del módulo. Si es necesario que incluyas pasos potencialmente costosos en proceso dentrode la cadena de Distutils, consulta la sección 8 sobre la extensión de las Distutils.
2.1 Un ejemplo simple 3

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->