Disons que j'ai la structure de répertoire suivante :
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Si je voulais importer bar.py
depuis foo.py
, comment pourrais-je le faire ?
Disons que j'ai la structure de répertoire suivante :
parent_dir/
foo_dir/
foo.py
bar_dir/
bar.py
Si je voulais importer bar.py
depuis foo.py
, comment pourrais-je le faire ?
La plupart des réponses proposées ont reposé sur la modification de sys.path
. À mon avis, cela n'est pas nécessaire si vous pouvez conserver correctement la structure relative des dossiers. J'ai été inspiré par la réponse à une question similaire :
Veuillez voir mon exemple ci-dessous. J'ai suivi la même structure de dossiers que dans votre question
Après avoir développé le dossier parent_dir
Le fichier bar.py
implémente une classe squelettique Bar
class Bar():
def __init__(self) -> None:
pass
def __repr__(self) -> str:
return "Ceci est une instance de Bar"
def some_method(self) ->None:
pass
from .bar import Bar
Le fichier foo.py
implémente une classe simple Foo
qui fait référence à la classe Bar
à travers un paramètre de constructeur.
from ..bar_dir import Bar
class Foo():
def __init__(self ,bar_instance: Bar) -> None:
self._bar=bar_instance
def __repr__(self) -> str:
return f"Vous êtes à l'intérieur d'une instance de Foo et vous venez d'accéder à bar={self._bar}"
from .foo import Foo
Il s'agit du script principal qui assemble les packages foo_dir
et bar_dir
import parent_dir.bar_dir as bar_lib
import parent_dir.foo_dir as foo_lib
if __name__ == "__main__":
f=foo_lib.Foo(bar_instance=bar_lib.Bar())
print(f"Ceci est une instance de foo={f}")
print(f"{bar_lib.Bar()}")
https://docs.python.org/3.9/tutorial/modules.html
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.