I have this structure of files (directory and after arrow files):
model -> py_file.py
report -> other_py_file.py
main __init__.py
:
import model
import report
model directory:
import py_file
report directory:
import other_py_file
now in other_py_file
I want to import py_file
, but what ever I try I give error that there is no such module.
I tried this:
from model import py_file
Then:
import py_file
Looks like these two folders don't see each other. What is the way to import file from other directory? Do I need to specify some additional imports in init.py files?
This question is related to
python
openerp
python-import
You can add to the system-path at runtime:
import sys
sys.path.insert(0, 'path/to/your/py_file')
import py_file
This is by far the easiest way to do it.
Python3:
import importlib.machinery
loader = importlib.machinery.SourceFileLoader('report', '/full/path/report/other_py_file.py')
handle = loader.load_module('report')
handle.mainFunction(parameter)
This method can be used to import whichever way you want in a folder structure (backwards, forwards doesn't really matter, i use absolute paths just to be sure).
There's also the more normal way of importing a python module in Python3,
import importlib
module = importlib.load_module('folder.filename')
module.function()
Kudos to Sebastian for spplying a similar answer for Python2:
import imp
foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()
Source: Stackoverflow.com