2 votes

Quelle est la manière correcte de chaîner des submodules d'importation ?

Disons que j'ai un projet avec la structure suivante :

 modules
    modulea.py
    moduleb.py
 program.py

program.py est l'exécutable principal, qui importe le module a comme ceci

from modules import modulea

dans le modulea, je voudrais importer quelque chose du moduleb. En toute logique, je devrais faire import moduleb car il se trouve dans le même répertoire. Mais cela donnerait ModuleNotFoundError: No module named 'moduleb'

Donc pour que cette importation en chaîne fonctionne, je dois soit faire from modules import moduleb . ce qui met en colère les IDE car il n'y a pas de répertoire "modules" autour ou from . import moduleb ce qui met en colère Pylint.

Bien que les deux méthodes ci-dessus fonctionnent, elles sont déroutantes et impythiques car l'une suppose que les importations vont se faire à partir d'un niveau supérieur et l'autre utilise des importations relatives lorsque cela ne semble pas nécessaire.

Y a-t-il un moyen de gérer cela avec plus de grâce ?

Merci.

-1voto

Mathieu Rollet Points 852

Vous pouvez faire modules un paquet python en créant un __init__.py dans celui-ci.

 modules
    __init__.py
|    modulea.py
    moduleb.py
 program.py

Ensuite, utilisez from modules.moduleb import some_object en modulea .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X