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

Python是否会重复加载已被其他模块导入的同名依赖库?

Python模块重复导入问题解答

结论

some_heavy_module 只会被导入1次,module1 会直接复用 main.py 中已经加载完成的模块对象,不会重复执行导入逻辑。

原理说明

Python 维护了一个全局的模块缓存字典 sys.modules,所有已经成功导入的模块都会被缓存到这个字典里:

  • 每次执行 import 语句时,Python 会优先查询 sys.modules,如果目标模块已经存在缓存记录,就直接返回缓存的模块对象,不会重新加载模块
  • 只有当缓存中没有对应模块时,才会执行完整的模块加载、初始化流程

对应示例的执行流程

  1. 运行 main.py 后首先执行 import some_heavy_module 语句:此时 sys.modules 中无该模块记录,Python 完成完整的模块加载逻辑,将模块对象存入缓存
  2. 后续执行 from submodule import main1 加载 module1 时,module1 中的 import some_heavy_module 语句触发查询,发现缓存中已经存在该模块,直接复用已有对象,不会重复加载

验证方法

你可以在 some_heavy_module 的代码第一行加入打印语句:

print("some_heavy_module 被加载了")

运行 main.py 后只会看到一次该打印输出,即可证明模块仅被加载一次。

注意:只有主动调用 importlib.reload() 强制重载模块时,才会跳过缓存重新执行加载逻辑,常规导入场景都会复用缓存。

内容的提问来源于stack exchange,提问作者CutePoison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:03