La aplicación My Python está construida de tal manera que algunas funcionalidades están disponibles como complementos. La arquitectura del complemento actualmente es muy simple: tengo una carpeta/paquete de complementos que contiene algunos módulos de python. Me carga el plugin correspondiente de la siguiente manera:Carga dinámica de complementos python sin compilar en el código de compilación py2exe
plugin_name = blablabla
try:
module = __import__(plugin_name, fromlist='do_something')
except ImportError:
#some error handling ...
y luego ejecutar:
try:
loans = module.do_something(id_t, pin_t)
except xxx:
# error handling
puedo compilar la aplicación a un binario utilizando py2exe de Windows. Esto funciona bien, excepto por el hecho de que todos los complementos están (y deben estar) incluidos en el binario. Esto no es muy práctico, ya que para cada nuevo complemento, tengo que volver a compilar y lanzar una nueva versión de mi aplicación. Sería mejor si un nuevo complemento (es decir, un archivo de Python) pudiera copiarse en alguna carpeta de complemento de la aplicación, y que el código de Python en el código del archivo sea interpretado sobre la marcha por mi aplicación.
¿Cuál es el mejor enfoque para hacerlo?
(aunque he de leer cada línea del archivo plugin seleccionado, y aplicando un exec
statement a ella. Sin embargo, podría haber mejores maneras ...)
Gracias por la respuesta. Pero, ¿no sería necesario que alguien tenga Python instalado en su computadora? (La solución que propuse, lo requeriría, ahora que lo pienso) – Rabarberski
Tiene razón, debe ser la misma instalación de python tanto para su aplicación como para los complementos externos. Estoy de acuerdo, esto es bastante molesto. –