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"]

相关推荐
少云清19 分钟前
【金融项目实战】7_接口测试 _代码实现接口测试(重点)
python·金融项目实战
深蓝电商API20 分钟前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
m0_5500246322 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
B站_计算机毕业设计之家1 小时前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
渣渣苏1 小时前
Langchain实战快速入门
人工智能·python·langchain
lili-felicity1 小时前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道1 小时前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子2 小时前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python