Ответ 1
Вы можете добавить к системному пути во время выполнения:
import sys
sys.path.insert(0, 'path/to/your/py_file')
import py_file
Это самый простой способ сделать это.
У меня есть эта структура файлов (каталог и файлы со стрелками):
model -> py_file.py
report -> other_py_file.py
main __init__.py
:
import model
import report
каталог модели:
import py_file
каталог отчетов:
import other_py_file
теперь в other_py_file
Я хочу импортировать py_file
, но что бы я ни старался, я даю ошибку, что такого модуля нет.
Я пробовал это:
from model import py_file
Тогда:
import py_file
Похоже, эти две папки не видят друг друга. Как импортировать файл из другого каталога? Нужно ли указывать дополнительные импортные файлы в файлах init.py?
Вы можете добавить к системному пути во время выполнения:
import sys
sys.path.insert(0, 'path/to/your/py_file')
import py_file
Это самый простой способ сделать это.
Python3:
import importlib.machinery
loader = importlib.machinery.SourceFileLoader('report', '/full/path/report/other_py_file.py')
handle = loader.load_module('report')
handle.mainFunction(parameter)
Этот метод можно использовать для импорта любым способом в структуре папок (в обратном направлении, вперёд не имеет значения, я просто использую абсолютные пути).
Существует также более нормальный способ импорта модуля Python в Python3,
import importlib
module = importlib.load_module('folder.filename')
module.function()
Слава Себастьяну за написание подобного ответа для Python2:
import imp
foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()