Python импорт между подпапками на одном уровне каталога с использованием относительного импорта - PullRequest
0 голосов
/ 17 апреля 2020

Привет всем! У меня есть пример структуры в python пакете:

main_folder
|main.py
|
|---folder_1
    |---__init__.py
    |---file1.py
|---folder_2
    |---__init__.py
    |---file2.py

file1.py:

def file_1():
    print('This is file 1')

file2.py:

from file_1_folder.file_1 import file_1


def file_2():
    print('This is file 2')


def file_composite():
    print('composite file')
    file_1()
    file_2()


if __name__ == "__main__":
    file_composite()

main.py:

from file_1_folder.file_1 import file_1
from file_2_folder.file_2 import file_composite


if __name__ == "__main__":
    file_composite()

Пока я вызываю file_1 (), file_2 () и file_composite () из main.py, все идет хорошо. Но что, если я хочу вызвать file_composite () из file_2.py непосредственно из командной строки?

В каждом типе импорта, который я пробовал, выдается ошибка импорта, поскольку путь находится на уровне ниже основного, и поэтому не могу найти file_1.py.

Конечно, если я использую sys.path.insert () или sys.path.append () с путем к folder_1, все работает, но это абсолютные методы импорта.

Есть ли способ заставить этот код работать и вызываться из main.py и file_2.py с использованием относительного импорта, а не абсолютного импорта?

Заранее спасибо всем.

...