Как мне подключить функций и объекты находящиеся внутри файла в разных папках?

Я запускаю файл находящийся в директории.

python/folder/test_1.py

И мне нужно получить функций из файлов test_2.py и test_3.py

Но способы которые я пробовал не работают.

#python/folder/test/test_2.py
from test.test_2 import fun_1, fun_2, fun_3
#python/test_3.py
sys.path += ['~/python'] 
from test_3 import fun_1, fun_2, fun_3

Что я делаю не так?


Ответы (1 шт):

Автор решения: MarianD
  1. Измените имя папки test, например на testing, и ваш первый импорт from testing.test_2 import fun_1, fun_2, fun_3 будет в Питоне 3.3+ работать.

    Имя test для пакета опасно, т.к. это имя регулярного пакета — папки Lib\test\ в папке вашей инсталляции Питона, и потому что папка Lib автоматически находится в списке sys.path (который команда import осматривает), ваш пакет test.test_2 будет Питон искать не в вашей папке test, a в своей Lib\test\:

    >>> import test
    >>> test.__path__
    ['C:\\Program Files\\Python37\\lib\\test'] 
    
  2. Для Питона до версии 3.2 включительно:

    Добавите файл с именем __init__.py (может быть пустой) в папки python, folder, testing, test2, test3, чтобы Питон узнал, что эти папки содержат пакеты.

  3. Для всех версий Питона:

    Перед командой from test_3 import fun_1, fun_2, fun_3 добавите путь к папке, в которой находится папка test3, например

    sys.path += [r'C:\Users\user\python']
    
→ Ссылка