J'ai une classe Python appelée "ClassA" et une autre classe Python qui est censée importer ClassA qui est "ClassB". La structure du répertoire est la suivante:
MainDir
../Dir
..../DirA/ClassA
..../DirB/ClassB
Comment pourrais-je utiliser sys.path
pour que ClassB puisse utiliser ClassA?
Vous devriez vraiment utiliser des packages. Ensuite, MainDir est placé à un point du système de fichiers sur sys.path (par exemple .../site-packages), puis vous pouvez dire dans ClassB:
from MainDir.Dir.DirA import ClassA # which is actually a module
Il vous suffit de placer des fichiers nommés __init__.py
dans chaque répertoire pour en faire une hiérarchie de packages.
comme réponse littérale à la question "Importation Python depuis le répertoire parent':
pour importer 'mymodule' qui se trouve dans le répertoire parent de votre module actuel:
import os
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.sys.path.insert(0,parentdir)
import mymodule
éditer Malheureusement, le __file__
l'attribut n'est pas toujours défini. Un moyen plus sûr d'obtenir le répertoire parent est via le module d'inspection:
import inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
Vous pouvez utiliser importation relative (exemple du lien, module actuel - A.B.C
):
from . import D # Imports A.B.D
from .. import E # Imports A.E
from ..F import G # Imports A.F.G