Подтвердить что ты не робот

Импорт из каталога для сестер

У меня есть класс Python под названием ClassA и еще один класс Python, который должен импортировать ClassA, который является "ClassB". Структура каталогов выглядит следующим образом:

MainDir
../Dir
..../DirA/ClassA
..../DirB/ClassB

Как использовать sys.path, чтобы ClassB мог использовать ClassA?

4b9b3361

Ответ 1

Вы действительно должны использовать пакеты. Затем MainDir помещается в точку файловой системы на sys.path(например,.../site-packages), тогда вы можете сказать в ClassB:

from MainDir.Dir.DirA import ClassA # which is actually a module

Вам просто нужно поместить файлы с именем __init__.py в каждый каталог, чтобы сделать его иерархией пакетов.

Ответ 2

как литеральный ответ на вопрос " Импорт Python из родительского каталога":

для импорта 'mymodule', который находится в родительском каталоге вашего текущего модуля:

import os
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
os.sys.path.insert(0,parentdir) 
import mymodule

изменить К сожалению, атрибут __file__ не всегда установлен. Более безопасный способ получить родительский адрес через модуль проверки:

import inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)

Ответ 3

Вы можете использовать относительный импорт (пример из ссылки, текущий модуль - A.B.C):

from . import D                 # Imports A.B.D
from .. import E                # Imports A.E
from ..F import G               # Imports A.F.G