How to import .py file from another directory? [duplicate]

孤人 提交于 2019-11-26 19:29:16

问题


This question already has an answer here:

  • How to do relative imports in Python? 14 answers

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?


回答1:


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.




回答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)

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


来源:https://stackoverflow.com/questions/22955684/how-to-import-py-file-from-another-directory

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!