Python 从另一个文件夹导入一个文件夹中的文件
我知道也有类似的问题被问到,但在这个简单的环境中,我发现的不是很清楚。给定此目录树,如何将函数从Python 从另一个文件夹导入一个文件夹中的文件,python,Python,我知道也有类似的问题被问到,但在这个简单的环境中,我发现的不是很清楚。给定此目录树,如何将函数从file1.py导入file2(我们从file2.py调用解释器)?我希望此设置在main_文件夹所在的位置独立工作,也就是说,如果我将main_文件夹复制到其他目录,导入仍能正常工作 main_folder folder1 file1.py (with a function func()) folder2 file2.py 可以使用“从”从路径导入
file1.py
导入file2
(我们从file2.py
调用解释器)?我希望此设置在main_文件夹
所在的位置独立工作,也就是说,如果我将main_文件夹
复制到其他目录,导入仍能正常工作
main_folder
folder1
file1.py (with a function func())
folder2
file2.py
可以使用“从”从路径导入
因此,您可以使用:
#file2.py
从importlib.machine导入SourceFileLoader
PATH=“../folder1/file1.py”
file1=SourceFileLoader(“module.name”,PATH).load\u module()
或者,如果要从软件包中导入,则可以使用:
#file2.py
从folder1.file1导入函数
如果要使用包方法,则需要从
main_文件夹运行它
也可以将绝对路径添加到
系统路径
指定模块搜索路径的字符串列表。从环境变量PYTHONPATH
初始化,加上依赖于安装的默认值
当程序启动时初始化时,此列表的第一项,path[0]
,是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,如果以交互方式调用解释器或从标准输入读取脚本),path[0]
是空字符串,它将指示Python首先搜索当前目录中的模块。请注意,由于PYTHONPATH
,脚本目录插入在插入的条目之前
程序可以出于自身目的自由修改此列表。只能将字符串和字节添加到sys.path
;导入期间将忽略所有其他数据类型
Python解释器最初调用的起始脚本是什么/在哪里?起始脚本是file2.py涉及
SourceFileLoader
的答案应该能满足您的需要,但从长远来看,您应该真正学会如何制作和使用包。那么使用包的解决方案是什么呢?
import sys
from pathlib import Path
sys.path.append(str(Path(sys.path[0]).resolve().parent / "folder1"))
import file1