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

相关推荐
a3158238062 小时前
Linux部署Python Django工程和Node工程,使用宝塔面板
linux·服务器·python·django·node·strapi·宝塔面板
B站计算机毕业设计之家2 小时前
机器学习:python智能电商推荐平台 大数据 spark(Django后端+Vue3前端+协同过滤 毕业设计/实战 源码)✅
大数据·python·spark·django·推荐算法·电商
豪哥大爷2 小时前
Python datetime模块全面指南
python
dagouaofei2 小时前
年终总结PPT用AI最快生成
人工智能·python·powerpoint
、、、、南山小雨、、、、2 小时前
云主机GPU pyTorch部署
人工智能·pytorch·python
n***4432 小时前
Java进阶:IO大全
java·开发语言·python
散峰而望2 小时前
AI 知识科普
人工智能·python·深度学习·机器学习·计算机视觉
海边夕阳20063 小时前
【每天一个AI小知识】:什么是语义分割?
人工智能·经验分享·python·深度学习·机器学习·语义分割
棒棒的皮皮3 小时前
【OpenCV】Python图像处理之图像表示方法
图像处理·python·opencv