Python运行时先将.py编译为.pyc字节码再由PVM执行;首次import、源文件更新时自动生成,存于__pycache__目录,支持手动编译,但不跨版本兼容。
Python 运行时并不会直接执行 .py 源文件,而是先将其编译为字节码(bytecode),保存为 .pyc 文件,再由 Python 虚拟机(PVM)解释执行。这个过程通常是自动完成的,但也可以手动触发。
什么时候生成 .pyc 文件Python 在以下情况下会生成或更新 .pyc 文件:首次导入(import)一个模块时(如import math_utils)
源文件(.py)比已有的 .pyc 文件更新(通过文件修改时间判断)
Python 启动时使用-B参数会跳过写入 .pyc;用-O或-OO会生成优化版(如__pycache__/module.cpython-312.pyc或module.cpython-312.opt-1.pyc)
.pyc 文件存放位置从 Python 3.2 开始,默认不再把 .pyc 放在源码同目录,而是统一存放在__pycache__子目录中,文件名包含 Python 版本和编译标记,例如:__pycache__/main.cpython-312.pyc立即学习“Python免费学习笔记(深入)
”;
Python 3.14.3微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。
下载这种设计避免了多版本 Python 共存时的冲突。可通过设置环境变量PYTHONPYCACHEPREFIX将所有缓存集中到指定路径(如构建隔离环境时有用)。
手动编译 .py 到 .pyc
有三种常用方式:
使用 compileall 模块:批量编译整个目录python -m compileall myproject/使用 py_compile 模块:编译单个文件python -m py_compile script.py编程调用:import py_compilepy_compile.compile('script.py', 'script.pyc')注意点与常见问题.pyc 文件不是跨平台、跨版本兼容的:不同 Python 主版本(如 3.9 和 3.12)生成的字节码不通用同一主版本下,不同次版本通常兼容,但不保证(尤其涉及新语法或内部结构变更时)
删除 .pyc 或 __pycache__ 不影响运行,下次 import 会自动重建若模块以zipimport或冻结(frozen)形式分发,可能不生成 .pyc
