Подтвердить что ты не робот

Как импортировать файл .py из другого каталога?

У меня есть эта структура файлов (каталог и файлы со стрелками):

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?

4b9b3361

Ответ 1

Вы можете добавить к системному пути во время выполнения:

import sys
sys.path.insert(0, 'path/to/your/py_file')

import py_file

Это самый простой способ сделать это.

Ответ 2

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()