文件被引入后,正常当前文件只会被初始化一次,但是项目中发现初始化了2次,生成了2个workflow_registry对象。

原因分析:
在pycharm中,将项目多个包设置为了source root。导入同一个文件的时候,路径名写的不一样,导致重复加载
1.py : from app.workflows.core.workflow_registry import register_workflow, WorkflowType
2.py :from workflows.core.workflow_registry import register_workflow, WorkflowType
同一个文件,导入包路径
sys.modules 是一个运行期全局字典 ,键是模块名(str),值是已经加载好的模块对象本身(module 实例) 。
Python 在 import 时先查它,命中就直接返回,没命中才去磁盘找文件并执行加载;因此它既是**"已加载模块缓存表"** ,也是**"避免重复加载"**的核心机制。
你自己写的 myfile.py,一旦被 import(或当成主脚本跑过),在 sys.modules 里就是一条普通记录,键是你 import 时用的"模块名" ,值是加载好的模块对象。
-
键怎么来的
-
用
import myfile→ 键就是'myfile' -
用
from pkg import myfile→ 键是'pkg.myfile' -
用
importlib.import_module('a.b.c')→ 键是'a.b.c'
-
sys.modules["app.workflows.core.workflow_registry"]
