py文件被初始化执行了2次

文件被引入后,正常当前文件只会被初始化一次,但是项目中发现初始化了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 时用的"模块名" ,值是加载好的模块对象。

  1. 键怎么来的

    • 用 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"

相关推荐
龙腾AI白云2 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱
fanruitian2 小时前
python 可视化 panda seaborn matplotlib.pyplot
开发语言·python·matplotlib
梦想不只是梦与想2 小时前
Python 中的 json 模块
python·json·对象转字符串
星河耀银海2 小时前
Python文件操作:read、readline、readlines读取方式对比
python·文件操作·面向对象·基础函数·教程学习
傅科摆 _ py2 小时前
DP,贪心,堆和栈,二分力扣复习
开发语言·python·算法
吴名氏.3 小时前
Java转AI Agent教程(第一周)让模型先跑起来
人工智能·python·ai·ai agent
第404号工位4 小时前
离职退电脑前别只点“清空回收站”!手把手教你彻底抹除凭证与数字痕迹
linux·python·架构
Metaphor6924 小时前
使用 Python 在 Word 文档中添加、修改和删除变量
python·word
終不似少年遊*4 小时前
【AI Coding实战方法论】从计划协作到架构护栏,一套能长期复用的工程流程
人工智能·python·团队开发·ai编程·ai coding·skills·上下文管理
lusklusklusk4 小时前
Python 全局变量与局部变量区别——global 关键字、__main__ 块与作用域示例
开发语言·前端·python