Я пишу апплет python для сбора данных из научных приборов, и я пытаюсь найти лучший способ управлять драйверами устройства.Задержка загрузки модулей в python
Каждый драйвер представлен отдельным модулем python в пакете, который является моей программой. Каждый из них реализует некоторый стандартный интерфейс, но в основном это гигантский список команд (и сопоставлений функций), характерных для каждого используемого устройства и шины. В конечном итоге (я пишу это для своей лабораторной группы и планирую поддерживать несколько десятков устройств), я хочу, чтобы не загружать их все сразу. Вместо этого во время выполнения я хочу прочитать список модулей в словаре/списке, а затем загрузить их только тогда, когда они действительно нужны.
Когда пользователь хочет использовать новое устройство, он выбирает используемый драйвер и передает имя вместе с подсистемой драйвера, которая затем проверяет, находится ли этот драйвер в списке загруженных модулей, и если это не , он вызывает функцию __import__
и загружает драйвер, а затем создает экземпляр объекта устройства с помощью драйвера и передает его обратно пользователю.
Мой вопрос: что является лучшим способом получить список всех модулей в относительном ключе? Я имею в виду, если я знаю, что драйверы находятся в ..drivers
, есть ли способ получить опрятный список модулей в этом subpacakage? Чтобы проиллюстрировать: обычно я просто звоню from ..drivers import driver_name
, чтобы импортировать модуль, но так как я не гарантированно должен быть в каталоге пакетов, не может просто нас os
получить список имен модулей.
В любом случае, любые идеи (даже, возможно, лучший способ выполнить то, что я хочу - загружаемые «драйверы») будут оценены.
Как бы я узнал о том, что водители регистрируются? Реализовать их с помощью небольших скриптов, чтобы найти мое программное обеспечение и зарегистрировать себя? или что-то более умное? – crasic
Спасибо за большое предложение, я реализую простой текстовый файл для хранения имен драйверов и метаданных, возможно, не лучшее долгосрочное решение (когда люди могут захотеть импортировать внешние драйверы), но определенно работает как прелесть на данный момент. – crasic