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"

相关推荐
风吹夏回7 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
小熊Coding8 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋98 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本8 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
田里的水稻9 小时前
OE_ubuntu26.04与宿主机之间复制粘贴内容
人工智能·python·机器人
jiayong239 小时前
02 创建虚拟环境
python
旺仔来了9 小时前
不联网的Linux下部署python环境
linux·开发语言·python
小江的记录本10 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
IP搭子来一个10 小时前
爬虫采集大量返回 403、429,到底卡在哪一环?
网络·爬虫·python
deepin_sir10 小时前
06 综合对比与实战选型——到底该用哪个?
python