如何在同一Python脚本中导入不同目录下的同名文件?
同时导入不同目录下同名Python文件的方法
你可以通过以下两种方式实现需求,分别访问两个common.py中的内容:
方法一:使用importlib.util手动加载模块
这种方式无需修改sys.path,直接指定文件路径加载模块,逻辑清晰:
import importlib.util import os # 加载/home/project/folder1/common.py,命名为c1 spec1 = importlib.util.spec_from_file_location("c1", os.path.join("/home/project/folder1", "common.py")) c1 = importlib.util.module_from_spec(spec1) spec1.loader.exec_module(c1) # 加载/home/project/folder2/common.py,命名为c2 spec2 = importlib.util.spec_from_file_location("c2", os.path.join("/home/project/folder2", "common.py")) c2 = importlib.util.module_from_spec(spec2) spec2.loader.exec_module(c2)
之后即可通过c1.MY_CONSTANT和c2.MY_CONSTANT分别访问两个文件中的同名常量。
方法二:临时修改sys.path后导入
通过临时添加目标目录到sys.path,导入后再移除路径,避免后续导入冲突:
import sys # 保存原始路径(可选,用于后续恢复) original_path = sys.path.copy() # 导入folder1下的common.py,命名为c1 sys.path.insert(0, "/home/project/folder1") import common as c1 sys.path.remove("/home/project/folder1") # 导入folder2下的common.py,命名为c2 sys.path.insert(0, "/home/project/folder2") import common as c2 sys.path.remove("/home/project/folder2") # 恢复原始路径(可选,避免影响其他模块导入) sys.path = original_path
同样可以通过c1.xxx和c2.xxx区分两个文件中的内容。
内容的提问来源于stack exchange,提问作者edn
相关产品推荐
相关产品推荐

