You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中的模块缓存:sys.modules是否依赖.pyc文件?

Python模块导入缓存与.pyc文件的关系

这俩是完全互不相关的两个独立机制,各自解决不同的问题:

  • sys.modules 是Python的模块实例缓存:不管你是从.py源码还是.pyc字节码加载的模块,只要首次导入成功,模块对象就会被存在这个字典里。后续再导入同名模块时,直接从字典里取现成的模块实例,避免重复执行模块里的代码、重复做加载解析的工作——核心是缓存「已经加载好的模块对象」。

  • .pyc 文件是字节码缓存:Python会把源码编译成字节码,首次导入时如果允许生成(默认开启),就把字节码存成.pyc文件。下次导入时,如果.pyc的修改时间比.py新,就直接加载字节码跳过编译步骤——核心是缓存「编译后的字节码」。

举两个例子就能看清楚独立性:

  1. 用python -B参数启动程序(禁止生成.pyc),sys.modules的缓存机制照样正常工作:第一次导入加载源码,后续导入直接从字典取实例。
  2. 手动删除sys.modules里的某个模块条目(比如del sys.modules['math']),下次导入该模块时,依然会优先找对应的.pyc文件(如果存在且有效),重新加载字节码(或编译源码),然后再把新的模块实例存入sys.modules。

内容的提问来源于stack exchange,提问作者user9949858

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:40:31