[英]Import of files in one folder from another folder
我知道有人问过类似的问题,但在这个简单的设置中,我发现的并不是很清楚。 鉴于此目录树,我如何将 function 从file1.py
导入到file2
(我们从file2.py
调用解释器)? 我希望这个设置在main_folder
所在的位置独立工作,也就是说,如果我将main_folder
复制到不同的目录,导入仍然可以正常工作。
main_folder
folder1
file1.py (with a function func())
folder2
file2.py
您可以使用importlib.machinery
中的SourceFileLoader
从路径导入。
所以你可以使用:
# file2.py
from importlib.machinery import SourceFileLoader
PATH = "../folder1/file1.py"
file1 = SourceFileLoader("module.name", PATH).load_module()
或者,如果您要从 package import
,那么您可以使用:
# file2.py
from folder1.file1 import func
如果您想使用 package 方法,那么您需要从main_folder
运行它。
您也可以将绝对路径添加到sys.path
。
sys.path
指定模块搜索路径的字符串列表。 从环境变量
PYTHONPATH
初始化,加上依赖于安装的默认值。在程序启动时初始化时,此列表的第一项
path[0]
是包含用于调用 Python 解释器的脚本的目录。 如果脚本目录不可用(例如,如果交互调用解释器或从标准输入读取脚本),path[0]
是空字符串,它指示 Python 首先搜索当前目录中的模块。 请注意,在PYTHONPATH
插入的条目之前插入了脚本目录。程序可以出于自己的目的自由修改此列表。 只有字符串和字节应该添加到
sys.path
; 导入期间将忽略所有其他数据类型。
import sys
from pathlib import Path
sys.path.append(str(Path(sys.path[0]).resolve().parent / "folder1"))
import file1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.