关于python:如何从另一个目录导入.py文件?

How to import .py file from another directory?

本问题已经有最佳答案,请猛点这里访问。

我有这个文件结构(目录和箭头文件之后):

1
2
model -> py_file.py
report -> other_py_file.py

__init__.py

1
2
import model
import report

模型目录:

1
import py_file

报告目录:

1
import other_py_file

现在在other_py_file中,我想导入py_file,但我尝试过的任何一次都会出错,因为没有这样的模块。

我试过这个:from model import py_file

然后:import py_file

看起来这两个文件夹没有看到对方。从其他目录导入文件的方法是什么?我需要在init.py文件中指定一些额外的导入吗?


您可以在运行时添加到系统路径:

1
2
3
4
import sys
sys.path.insert(0, 'path/to/your/py_file')

import py_file

这是迄今为止最简单的方法。


Python 3:

1
2
3
4
5
6
import importlib.machinery

loader = importlib.machinery.SourceFileLoader('report', '/full/path/report/other_py_file.py')
handle = loader.load_module('report')

handle.mainFunction(parameter)

这个方法可以用于导入文件夹结构中您想要的任何方式(向后、向前并不重要,我使用绝对路径只是为了确保)。

感谢塞巴斯蒂安为Python2提供了类似的答案:

1
2
3
4
import imp

foo = imp.load_source('module.name', '/path/to/file.py')
foo.MyClass()