从另一个文件夹导入一个文件夹中的文件

cer*_*rou 5 python

我知道有人问过类似的问题,但在这个简单的设置中,我发现的内容对我来说并不是很清楚。鉴于此目录树,我如何从file1.pyinto导入函数file2(我们从 中调用解释器file2.py)?我希望此设置在位置main_folder上独立工作,也就是说,如果我复制main_folder到不同的目录,导入仍然可以正常工作。

main_folder
    folder1
        file1.py (with a function func())
    folder2
        file2.py
Run Code Online (Sandbox Code Playgroud)

Abh*_*wal 2

您可以使用SourceFileLoaderfromimportlib.machinery从路径导入。

所以你可以使用:

# file2.py

from importlib.machinery import SourceFileLoader

PATH = "../folder1/file1.py"
file1 = SourceFileLoader("module.name", PATH).load_module()
Run Code Online (Sandbox Code Playgroud)

或者,如果您想import从包中获取,则可以使用:

# file2.py

from folder1.file1 import func
Run Code Online (Sandbox Code Playgroud)

如果您想使用包方法,那么您将需要从 运行它main_folder