1) Creamos el módulo que queremos distribuír
Para este ejempo creamos una funcion llamada "recurPrint", que sirve para recorrer una lista de forma recurisva imprimiendo todos los items que la componen, y en caso que dentro de esta lista exista otra lista, también la recorre e imprime su contenido.
para ello creamos un directorio llamado recurprint y dentro de este un archivo llamado recurprint.py con el siguiente código:
-----------------------------------------
"""
Prueba de distribucion de modulo
"""
def recurPrint(pList):
"""
Recorre una lista de forma recursiva e imprime su contendio
"""
for item in pList:
if isinstance(item, list):
recurPrint(item)
else:
print item
------------------ EOF ------------------
2) Generamos el instalador para nuestro módulo
Dentro del mismo directorio, creamos un archivo llamado setup.py, con el siguiente contenido:
-----------------------------------------
from distutils.core import setup
setup(
name = "recurprint",
version = "0.0.1",
py_modules = ["recurprint"],
author = "Gustavo Borgoni",
author_email = "gborgoni@gmail.com",
url = "http://asteriskhelp.blogspot.com",
description = "Este es un modulo de prueba ",
)
------------------ EOF ------------------
3) Generamos los archivos de distribución
Para ello corremos el siguiente comando, dentro del directorio recurprint:
$ python setup.py sdist
Lo que aparecerá en la pantalla:
-----------------------------------------
running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)
warning: sdist: standard file not found: should have one of README, README.txt
writing manifest file 'MANIFEST'
creating recurprint-0.0.1
making hard links in recurprint-0.0.1...
hard linking recurprint.py -> recurprint-0.0.1
hard linking setup.py -> recurprint-0.0.1
creating dist
Creating tar archive
removing 'recurprint-0.0.1' (and everything under it)
-----------------------------------------
Una vez finalizada la ejecución del comando anterior, nos vamos a encontrar que el contenido de nuestro directorio quedó de la siguiente manera:
recurprint.py (Nuestro código)
recurprint.pyc (Nuestro código compilado)
build
lib
recurprint.py (Nuestro código)
dist
recurprint-0.0.1.tar.gz (Nuestro paquete para distribuír con nuestros amigos)
MANIFEST (Contiene la lista de archivos que son incluidas en esta distribución)
setup.py (Archivo setup creado por nosotros)
4) Instalamos nuestro módulo, para luego poder utilizarlo en nuestros proyectos
$ sudo python setup.py install
[sudo] password for gus:
running install
running build
running build_py
running install_lib
copying build/lib.linux-x86_64-2.7/recuprint.py -> /usr/local/lib/python2.7/dist-packages
byte-compiling /usr/local/lib/python2.7/dist-packages/recurprint.py to recurprint.pyc
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/recurprint-0.0.1.egg-info
5) Probamos usar nuestra lib:
$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from recurprint import recurPrint
>>> lista = ["item1", "item2", ["subitem1", "subitem2"]]
>>> recurPrint(lista)
item1
item2
subitem1
subitem2
>>>
Esto es todo por ahora, espero que sea útil la info.
Abrazo!