J'ai eu du mal avec les importations dans mon colis pendant la dernière heure.
J'ai une structure de répertoire comme ceci:
main_package
|
| __init__.py
| folder_1
| | __init__.py
| | folder_2
| | | __init__.py
| | | script_a.py
| | | script_b.py
|
| folder_3
| | __init__.py
| | script_c.py
Je veux accéder au code dans script_b.py
ainsi que le code de script_c.py
de script_a.py
. Comment puis-je faire ceci?
Si je mets un simple import script_b
à l'intérieur script_a.py
, quand je cours
from main_package.folder_1.folder_2 import script_b
Je rencontre un
ImportError: no module named "script_b"
Pour accéder à script_c.py
, Je n'ai aucune idée. Je n'ai pas pu trouver d'informations sur l'accès aux fichiers deux niveaux plus haut, mais je sais que je peux importer des fichiers un niveau plus haut avec
from .. import some_module
Comment puis-je accéder à ces deux fichiers à partir de script_a.py
?
Pour accéder à script_c et script_b à partir de script_a, vous utiliseriez:
from ...folder_3 import script_c
from . import script_b
Ou si vous utilisez python3, vous pouvez importer script_b à partir de script_a en utilisant simplement:
import script_b
Cependant, vous devriez probablement utiliser des importations absolues:
from mypackage.folder_3 import script_c
from mypackage.folder1.folder2 import script_b
Voir aussi: Importations absolues vs importations relatives