PDF de programación - Tema 8 Distribución del código - Curso de Python Avanzado

Imágen de pdf Tema 8 Distribución del código - Curso de Python Avanzado

Tema 8 Distribución del código - Curso de Python Avanzadográfica de visualizaciones

Publicado el 5 de Mayo del 2018
540 visualizaciones desde el 5 de Mayo del 2018
670,2 KB
50 paginas
Creado hace 13a (01/05/2011)
Tema 8 Distribución del código

Curso de Python Avanzado

Juan Pedro Bolívar Puente

Instituto Andaluz de Astrofísica

Mayo de 2011

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

1 / 49

Índice

Introducción

1
2 Paquetes
3 Distribuyendo el software
4 Python Package Index
5 Conclusiones

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

2 / 49

Índice

Introducción

Introducción

1
2 Paquetes
3 Distribuyendo el software
4 Python Package Index
5 Conclusiones

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

3 / 49

Introducción

Introducción

distutils = utilidades para la

distribución del código

Permite

Gestionar los metadados del paquete
Gestionar la compilación de módulos sencillos
Gestionar las instalación del software
Crear paquetes para su distribución

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

4 / 49

Introducción

Ejemplo de programa

$ python setup.py --help
$ python setup.py --help-commands
$ python setup.py --author
$ python setup.py --provides
$ python setup.py install

Después de instalar podemos usarlo en cualquier sitio

from crazymod import mod
mod . c ra zy f un c ()

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

5 / 49

Índice

Paquetes

Introducción

1
2 Paquetes
3 Distribuyendo el software
4 Python Package Index
5 Conclusiones

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

6 / 49

La base de distutils

Paquetes

La base de distutils es la función

distutils.core.setup

Ejecuta el script que hemos visto
Parámetros por clave modifican su comportamiento

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

7 / 49

Ejemplo

Paquetes

packages indica una lista de paquetes ...

from d is tu t il s . core import setup

setup (

= ’ Cr a zy So f t ’ ,
= ’ 1.3 ’ ,
= ’ Crazy package that is .. ’ ,
= ’ Crazy Author ’ ,

name
version
d e s c r i p t i o n
author
a u t h o r _ e m a i l = ’ r a s k o l n i k o v @ g n u . org ’ ,
url
packages
)

= ’ http :// www . iaa . es ’ ,
= [ ’ crazymod ’] ,

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

8 / 49

Buscando automáticamente ...

Paquetes

find packages los busca automáticamente ...

from d is tu t il s . core import setup
from d is tu t il s . core import f i n d _ p a c k a g e s

setup (

= ’ Cr a zy So f t ’ ,
= ’ 1.3 ’ ,
= ’ Crazy package that is .. ’ ,
= ’ Crazy Author ’ ,

name
version
d e s c r i p t i o n
author
a u t h o r _ e m a i l = ’ r a s k o l n i k o v @ g n u . org ’ ,
url
packages
)

= ’ http :// www . iaa . es ’ ,
= f i n d _ p a c k a g e s () ,

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

9 / 49

Encontrando paquetes

Paquetes

Aunque es mejor ser explícito ...

Cuando nombre del paquete = nombre del directorio ...

p a c k a g e _ d i r = { ’ ’:

’ lib ’}

p a c k a g e _ d i r = { ’ foo ’ : ’ lib ’}

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

10 / 49

Módulos

Paquetes

En programas pequeños hay módulos sueltos ...

p y _ m o d u l e s = [ ’ mod1 ’ , ’ pkg . mod2 ’]

¡Los paquetes tienen que tener su

init .py de todas formas!

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

11 / 49

Metadatos

Paquetes

author Lista con los autores del proyecto

author email Lista con los correos de los autores, si

quieren recibir correos

contact Persona de contacto
contact email Debes proveerlo
description Descripcion corta, idealmente de < 80

caracteres

long description Descripcion completa

fullname Nombre completo
keywords Etiquetas

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

12 / 49

Metadatos

Paquetes

license ¡Poner siempre!

maintainer Poner si es diferente del autor
maintainer email Y su correo

name Nombre como ¡idenficador válido!

platforms Lista de plataformas donde crees que

funciona...

url Página oficial

version Versión del proyecto

classifiers Lista de Trove classifiers

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

13 / 49

Clasificadores

Paquetes

http://pypi.python.org/pypi?%3Aaction=list_classifiers

’Development Status :: 4 - Beta’,
’Environment :: Console’,
’Environment :: Web Environment’,
’Intended Audience :: End Users/Desktop’,
’Intended Audience :: Developers’,
’Intended Audience :: System Administrators’,
’License :: OSI Approved :: Python Software Foundation License’,
’Operating System :: MacOS :: MacOS X’,
’Operating System :: Microsoft :: Windows’,
’Operating System :: POSIX’,
’Programming Language :: Python’,
’Topic :: Communications :: Email’,
’Topic :: Office/Business’,
’Topic :: Software Development :: Bug Tracking’,

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

14 / 49

Clasificadores

Paquetes

http://pypi.python.org/pypi?%3Aaction=list_classifiers

’Development Status :: 4 - Beta’,
’Environment :: Console’,
’Environment :: Web Environment’,
’Intended Audience :: End Users/Desktop’,
’Intended Audience :: Developers’,
’Intended Audience :: System Administrators’,
’License :: OSI Approved :: Python Software Foundation License’,
’Operating System :: MacOS :: MacOS X’,
’Operating System :: Microsoft :: Windows’,
’Operating System :: POSIX’,
’Programming Language :: Python’,
’Topic :: Communications :: Email’,
’Topic :: Office/Business’,
’Topic :: Software Development :: Bug Tracking’,

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

15 / 49

Instalando scripts

Paquetes

scripts =[ ’ scripts / x m l p r o c _ p a r s e ’ ,

’ bin / x m l p r o c _ v a l ’]

Se instalan en $PREFIX/bin
Si la primera linea es #! y contiene la palabra
python entonces se cambia por el interprete de
Python local durante la instalación
--excutable permite al usuario cambiarlo a mano

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

16 / 49

Ficheros de datos

Paquetes

Datos asociados a un paquete

p a c k a g e _ d a t a ={ ’ mypkg ’: [ ’ data /*. dat ’ ]} ,

Los ficheros contienen globs
Están relativos al directorio del paquete
Las jerarquías de directorios las crea el instalador

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

17 / 49

Ficheros de datos

Paquetes

Fichero que de los que

el código no depende tanto

d a t a _ f i l e s =[( ’ bitmaps ’ , [ ’ bm / b1 . gif ’ , ’ bm / b2 . gif ’ ]) ,

( ’ config ’ , [ ’ cfg / data . cfg ’ ]) ,
( ’/ etc / init . d ’ , [ ’ init - script ’ ])]

Las rutas destino relativas lo son a sys.prefix
Están relativos al directorio actual
Del fuente sólo se mantiene el nombre del fichero

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

18 / 49

Dependencias

Paquetes

Podemos especificar las

dependencias con depends
Se pueden poner la versión con comparadores

setup (

depends = [ ’ pyfits ’ ,

’ pygtk >= 2.12 ’]

)

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

19 / 49

Dependencias

Paquetes

provides y obsoletes permiten
definir qué dependencias proveemos

setup (

provides = [ ’ mymod ’ , ’ mypkg (3.2) ’] ,
o bs ol e te s = [ ’ oldmod < 2.0 ’]

)

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

20 / 49

Extensiones

Paquetes

Automatizamos la compilación e

instalación de extensiones

from d is tu t il s . core import setup , E xt e ns io n
setup (... ,

e x t _ p a c k a g e = ’ pkg ’ ,
e x t _ m o d u l e s =[

E xt en s io n ( ’ foo ’ , [ ’ f1 . c ’ , ’ f2 . c ’ ]) ,
E xt en s io n ( ’ subpkg . bar ’ , [ ’ bar . c ’ ])] ,

)

También soporta .i para SWIG

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

21 / 49

Extensiones

Paquetes

A Extension le podemos pasar parámetros

include dirs Directorios de los includes
define macros Macros del preprocesador
undef macros Que desdefinir
library dirs Para buscar bibliotecas

libraries Con las que enlazar

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

22 / 49

El asunto de Ctypes

Paquetes

¿Cuidado con ctypes?

Mi hack personal :)

def l o a d _ c t y p e s _ e x t e n s i o n ( name ):

lib = None
for x in sys . path :

try :

lib = cdll . L o a d L i b r a r y ( path . join (x , name ))
break

except OSError :

pass

if not lib :

raise ImportError , " Could not find C lib ... "

return lib

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

23 / 49

Distribuyendo el software

Índice

Introducción

1
2 Paquetes
3 Distribuyendo el software
4 Python Package Index
5 Conclusiones

Juan Pedro Bolívar Puente (Instituto Andaluz de Astrofísica)

Tema 8 Distribución del código

Mayo de 2011

24 / 49

Distribuyendo el software

Distribuyendo el software

$ python setup.py sdist

Genera un tarball que incluye ...

Los fuentes de los py
  • Links de descarga
http://lwp-l.com/pdf10832

Comentarios de: Tema 8 Distribución del código - Curso de Python Avanzado (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