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

相关推荐
知行合一。。。4 小时前
Python--04--数据容器(总结)
开发语言·python
架构师老Y4 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
lifewange5 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
pluvium275 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh
2401_827499995 小时前
python项目实战09-AI智能伴侣(ai_partner_5-6)
开发语言·python
PD我是你的真爱粉5 小时前
MCP 协议详解:从架构、工作流到 Python 技术栈落地
开发语言·python·架构
ZhengEnCi5 小时前
P2G-Python字符串方法完全指南-split、join、strip、replace的Python编程利器
python
是小蟹呀^6 小时前
【总结】LangChain中工具的使用
python·langchain·agent·tool
宝贝儿好6 小时前
【LLM】第二章:文本表示:词袋模型、小案例:基于文本的推荐系统(酒店推荐)
人工智能·python·深度学习·神经网络·自然语言处理·机器人·语音识别
王夏奇6 小时前
pythonUI界面弹窗设置的几种办法
python·ui