Estoy escribiendo un applet de python para la adquisición de datos de instrumentos científicos y estoy tratando de encontrar la mejor manera de administrar los "controladores" de mi dispositivo.Carga retardada de módulos en python
Cada controlador está representado por un módulo de python separado en el paquete que es mi programa. Cada uno implementa una interfaz estándar, pero principalmente es una lista gigantesca de comandos (y asignaciones de función) que son específicos para cada dispositivo y bus involucrados. A la larga, (estoy escribiendo esto para mi grupo de laboratorio y planeo dar soporte a unas pocas docenas de dispositivos), quiero evitar cargarlos todos a la vez. En cambio, en el tiempo de ejecución, quiero leer una lista de módulos en un diccionario/lista y luego cargarlos solo cuando realmente los necesite.
Cuando el usuario quiere usar un nuevo dispositivo, selecciona el controlador que usará y pasa el nombre al subsistema del controlador que verifica si ese controlador está en la lista de módulos cargados, y si no lo está , llama a la función __import__
y carga el controlador en la instancia de un objeto del dispositivo utilizando el controlador y se lo devuelve al usuario para su uso.
Mi pregunta es: ¿Cuál es la mejor manera de obtener una lista de todos los módulos de una manera relativa? Lo que quiero decir es que, si sé que los controladores están ubicados en ..drivers
¿hay alguna manera de obtener una lista ordenada de módulos en ese subpacakage? Para ilustrar: usualmente llamo al from ..drivers import driver_name
para importar el módulo, pero como no estoy seguro de que sea en el directorio del paquete, no podemos simplemente llamarnos os
para obtener una lista de nombres de módulos.
En cualquier caso, cualquier idea (incluso tal vez una mejor manera de lograr lo que quiero - "controladores" cargables) sería apreciada.
¿Qué debo hacer para que los conductores se registren? Implementarlos con pequeños guiones para encontrar mi software y registrarse? o algo más inteligente? – crasic
Gracias por la gran sugerencia, implemento un archivo de texto simple para mantener los nombres y metadatos de los controladores, quizás no la mejor solución a largo plazo (cuando las personas quieran importar controladores externos), pero definitivamente funciona como un encanto por el momento. – crasic