J'écris une applet python pour l'acquisition de données à partir d'instruments scientifiques et j'essaie de trouver la meilleure façon de gérer les pilotes de mon périphérique.Chargement différé des modules en python
Chaque pilote est représenté par un module python distinct dans le package qui est mon programme. Ils implémentent chacun une interface standard, mais la plupart du temps c'est une liste gigantesque de commandes (et de mappages de fonctions) spécifiques à chaque périphérique et bus impliqués. À long terme, (j'écris ceci pour mon groupe de laboratoire et je prévois de supporter quelques douzaines de dispositifs), je veux éviter de les charger tous en même temps. Au lieu de cela, au moment de l'exécution, je veux lire une liste de modules dans un dictionnaire/une liste, puis les charger uniquement lorsqu'ils sont réellement nécessaires. Lorsque l'utilisateur souhaite utiliser un nouveau périphérique, il sélectionne le pilote à utiliser et transmet le nom au sous-système du pilote qui vérifie ensuite si ce pilote figure dans la liste des modules chargés, et s'il ne l'est pas. , il appelle la fonction __import__
et charge le pilote puis instancie un objet périphérique en utilisant le pilote et le remet à l'utilisateur à utiliser.
Ma question est: Quelle est la meilleure façon d'obtenir une liste de tous les modules d'une manière relative? Qu'est-ce que je veux dire, si je sais que les pilotes sont situés dans ..drivers
est-il un moyen d'obtenir une liste ordonnée de modules dans ce sous-paquet? Pour illustrer: habituellement j'appelle juste from ..drivers import driver_name
pour importer le module, mais puisque je ne suis pas garanti pour être dans le répertoire de paquet, ne pouvons pas simplement nous os
pour obtenir une liste de noms de modules.
Dans tous les cas, des idées (même peut-être un meilleur moyen d'accomplir ce que je veux - "pilotes" chargeables) seraient appréciées.
Comment procéder pour que les pilotes s'inscrivent eux-mêmes? Les implémenter avec de petits scripts pour trouver mon logiciel et s'enregistrer? ou quelque chose de plus intelligent? – crasic
Merci pour la bonne suggestion, j'implémente un simple fichier texte pour contenir les noms de pilotes et les métadonnées, peut-être pas la meilleure solution à long terme (quand les gens voudront importer des pilotes externes), mais fonctionne pour le moment. – crasic