Comment importer un module (fichier python) résidant dans le répertoire parent?
Les deux répertoires ont un __init__.py
fichier dans eux mais je ne peux toujours pas importer un fichier du répertoire parent?
Dans cette disposition de dossier, le script B tente d'importer le script A:
Folder A:
__init__.py
Script A:
Folder B:
__init__.py
Script B(attempting to import Script A)
Le code suivant dans le script B ne fonctionne pas:
import ../scriptA.py # I get a compile error saying the "." is invalid
Vous n’importez pas de scripts dans Python vous importez des modules. Certains python sont des scripts que vous pouvez exécuter directement (ils effectuent un travail utile dans un module -niveau).
En général, il est préférable d'utiliser les importations absolues plutôt que les importations relatives.
toplevel_package/
├── __init__.py
├── moduleA.py
└── subpackage
├── __init__.py
└── moduleB.py
Dans moduleB
:
from toplevel_package import moduleA
Si vous souhaitez exécuter moduleB.py
en tant que script, assurez-vous que le répertoire parent pour toplevel_package
est dans votre sys.path
.
De la docs :
from .. import scriptA
Vous pouvez le faire dans des packages, mais pas dans des scripts que vous exécutez directement. À partir du lien ci-dessus:
Notez que les importations relatives explicites et implicites sont basées sur le nom du module actuel. Comme le nom du module principal est toujours "__main__", les modules destinés à être utilisés comme module principal d'une application Python doivent toujours utiliser des importations absolues.
Si vous créez un script qui importe A.B.B, vous ne recevrez pas ValueError.
Si vous souhaitez exécuter le script directement, vous pouvez:
PYTHONPATH
).sys.path
dans le script.Ensuite:
import module_you_wanted