Python: comment importer depuis tous les modules en dir?
Dir structure:
main.py
my_modules/
module1.py
module2.py
module1.py:
class fooBar():
....
class pew_pew_FooBarr()
....
...
Comment puis-je ajouter toutes les classes du module* pour principal sans les préfixes (c'est à dire à les utiliser comme des foo = fooBar(), pas de foo = my_modules.module1.fooBar()).
Un choix évident est d'écrire main.py quelque chose comme ceci:
from my_modules.module1 import *
from my_modules.module2 import *
from my_modules.module3 import *
...
Mais je ne veux pas changer main.py lorsque je créer un nouveau moduleN. Est-il une solution?
Je sais, ce n'est pas une bonne idée d'importer des classes comme ça, mais je suis toujours curieux à propos de ça.
UPD: Cette question est différente de celle d'un Le chargement de tous les modules dans un dossier en Pythonparce que mon problème est de charger les modules sans espaces de noms.
source d'informationauteur ov7a
Vous devez vous connecter pour publier un commentaire.
Dans le
my_modules
dossier, ajouter un__init__.py
fichier pour en faire un bon paquet. Dans ce fichier, vous pouvez injecter les valeurs globales de chacun de ces modules dans la portée globale de la__init__.py
fichier, ce qui les rend disponibles en tant que votre module est importé (après avoir ajouté le nom de l'ensemble de la__all__
variable):Maintenant, au lieu de faire:
Il vous suffit de faire:
Ou tout importer dans la portée globale, qui semble être ce que vous voulez faire:
Le problème avec cette approche est classes de remplacer l'un de l'autre, de sorte que si deux modules offrent
Foo
vous ne serez en mesure d'utiliser celle qui a été importé dernier.