Delayed загрузка модулей в python

Я пишу апплет на языке Python для сбора данных с научных приборов и пытаюсь найти лучший способ управления «драйверами» моего устройства.

Каждый Драйвер представлен отдельным модулем python в пакете, который является моей программой. Каждый из них реализует стандартный интерфейс, но в основном это ' гигантский список команд (и сопоставлений функций), специфичных для каждого устройства и шины. В конечном итоге (я пишу это для своей лабораторной группы и планирую поддерживать несколько десятков или около того устройств), я хочу избежать загрузки всех их сразу. Вместо этого во время выполнения я хочу прочитать список модулей в словаре / списке, а затем загружать их только тогда, когда они действительно нужны.

Когда пользователь хочет использовать новое устройство, он выбирает драйвер для использования и передает имя подсистеме драйвера, которая затем проверяет, есть ли этот драйвер в списке загруженных модулей, и если это не так, он вызывает функцию __ import __ и загружает драйвер, затем создает экземпляр объекта устройства, используя драйвер, и возвращает его пользователю для использования.

Мой вопрос: Как лучше всего получить список всех модулей в относительном порядке? Я имею в виду, если я знаю, что драйверы находятся в .. drivers , есть ли способ получить аккуратный список модулей в этом вложенном пакете? Чтобы проиллюстрировать: обычно я просто вызываю из ..drivers import имя_драйвера , чтобы импортировать модуль, но поскольку мне не гарантируется, что я в каталоге пакета, не могу только мы os , чтобы получить список имен модулей.

В любом случае, любые идеи (даже, возможно, лучший способ достичь того, что я хочу - загружаемые «драйверы») будут оценены.

5
задан crasic 30 October 2010 в 09:49
поделиться