Empotrar módulos.

Pepe Aracil pepe en diselpro.com
Jue Ene 25 10:17:21 CET 2007


Hola.

Desgraciadamente no existe el módulo zipimport para pyS60, ya que
está basado en python 2.2. Así que no puedo usar la técnica del fichero zip.

Mi intención es empotrar módulos en código fuente (.py no pyc/pyo) y he intentado
esta otra técnica, me gustaría que alguien conocedor de las interioridades
de python me diga si me dejo algo.

Ejemplo:

import sys
import imp

mo = imp.new_module("prueba")

modulo_prueba = """
a = 25
print "esto es un modulo de prueba"

"""
exec modulo_prueba in mo.__dict__

sys.modules[mo.__name__] = mo
del(mo)
import prueba

print prueba.a

--- fin ---




Chema Cortes escribió:
> El 25/01/07, Pepe Aracil<pepe en diselpro.com> escribió:
>> Hola.
>>
>> Estoy desarrollando una aplicación para pyS60 (python para nokia S60).
>> Esta aplicación depende de unos módulos (smtplib entre otros) que no
>> están en la distribución oficial de pyS60.
>>
>> El caso es que he conseguido portar estos módulos, pero me gustaría
>> que mi aplicación fuera un solo fichero .py para no liar al personal.
>>
>> ¿Como puedo empotrar varios módulos en un solo fichero .py?
>>
>> ¿Si meto un módulo entero dentro de una cadena en base64, hay forma
>> luego de importarlo con el módulo imp?
> 
> Hace tiempo que intenté hacer algo similar. Logré incrustar varios
> módulos (de código python) en un único fichero. Al ejecutar el
> fichero, se creaba un fichero zip temporal que se añadía a la ruta de
> búsqueda. La documentación de este experimento lo tuve en mi bitácora
> desaparecida. Hasta que active la nueva bitácora, se puede consultar
> desde aquí:
> 
>  http://docs.google.com/View?docid=dcxb3czz_7c89rcz
> 
> Hacer notar que esta técnica no sirve para las librerías dinámicas
> (.dll, .so). La carga de estas librerías deben seguir las normas que
> tenga el sistema operativo que uses.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es




Más información sobre la lista de distribución Python-es