Привет всем! У меня есть пример структуры в 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 с использованием относительного импорта, а не абсолютного импорта?
Заранее спасибо всем.