You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:55:21