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"

相关推荐
leisoo809739 分钟前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
卷无止境42 分钟前
FastAPI 的 Metadata 到底是什么,又牵动了哪些核心概念
后端·python
卷无止境44 分钟前
FastAPI 调试实战,从断点到生产环境的排错心法
后端·python
yaoxin5211232 小时前
503. Java 反射 - 编写 ServiceFactory 类
java·开发语言·python
kyrie_sakura2 小时前
python学习笔记3 -- 流程控制语句结构
笔记·python·学习
程序员小八7772 小时前
Java 快速转 Go
java·python·golang
梦想的旅途24 小时前
Python实现企业微信文本消息发送
开发语言·python·企业微信
%474 小时前
DAY41
pytorch·python
敲代码还房贷4 小时前
VMware17 + Ubuntu22.04 共享 完整步骤
linux·python·ubuntu
测试19984 小时前
Selenium 无法定位元素的几种解决方案
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例