Как импортировать функции из скрипта в виде пакета из папки одного уровня - PullRequest
0 голосов
/ 12 февраля 2020

У меня следующая структура папок:

[parent_folder]
    |-- [main_folder]
            |-- main.py
    |-- [functions_folder]
            |-- module_functions.py
            |-- init.py

Содержимое файла:

#main.py
from functions_folder.module_functions import function_a
function_a(5)

#module_functions.py
def function_a(inp):
    print(inp)

#init.py
from .functions_folder import module_functions

В текущем состоянии main не может загружать функции из functions_folder (что имеет смысл ) с ошибкой:

[...]
ModuleNotFoundError: No module named 'functions_folder'

- я точно знаю, что если бы main.py был в parent_folder, то все это работало бы без проблем (потому что оно могло бы видеть один уровень вниз).

-Я также знаю, что если я добавлю:

sys.path.append(re.search(r'(.*\\)', os.path.dirname(__file__)).group(1))

к main.py перед импортом (ie. Если я добавлю parent_folder к пути, чтобы он теперь мог видеть functions_folder на один уровень ниже), это было бы снова хорошо. Но есть ли способ добиться этого, не добавляя путь, просто используя init s?

Другими словами, каким должно быть содержимое двух файлов init в parent_folder и main_folder, чтобы main могло видеть содержимое functions_folder?

EDIT. Я считаю, что вопрос, предложенный в комментариях, не отвечает текущему, потому что проблема заключается в импорте из одного уровня (но из другой папки) или выше, а не из папки вниз.

...