python字节码缓存 .pyc 文件
所属分类 python
浏览量 11
__pycache__ 是 Python 3 自动生成的文件夹,
用于存储编译后的字节码文件(.pyc),这些文件能提高程序的加载速度
__pycache__ 是 Python 优化机制的一部分,能提升程序运行效率,通常无需干预
在版本控制中忽略该文件夹,可保持项目整洁
1. 作用与原理
字节码缓存:
Python 解释器执行代码前,会将 .py 文件编译为字节码(.pyc),并存储在 __pycache__ 中
加速加载:
下次运行相同代码时,若源码未修改,Python 会直接读取 .pyc 文件,跳过编译步骤,提升启动速度
版本隔离:
不同 Python 版本(如 3.8、3.9)生成的 .pyc 文件不同,
会分别存储在 __pycache__ 中(如 module.cpython-38.pyc)
2. 文件结构示例
假设项目结构如下:
my_project/
├── main.py
└── utils/
├── helper.py
└── __init__.py
运行后,Python 会生成:
plaintext
my_project/
├── __pycache__/
│ └── main.cpython-39.pyc # 对应 main.py
└── utils/
├── __pycache__/
│ ├── helper.cpython-39.pyc # 对应 helper.py
│ └── __init__.cpython-39.pyc
├── helper.py
└── __init__.py
3. 常见问题与处理方式
3.1 需要手动删除吗?
不需要:Python 会自动管理 .pyc 文件的更新和清理
特殊情况:若源码修改后程序行为异常,可手动删除 __pycache__ 文件夹,Python 会重新生成
3.2 如何禁用生成?
临时禁用:运行脚本时添加 -B 参数:
python -B main.py
环境变量:设置 PYTHONDONTWRITEBYTECODE=1:
# Linux/macOS
export PYTHONDONTWRITEBYTECODE=1
python main.py
# Windows
set PYTHONDONTWRITEBYTECODE=1
python main.py
3.3 如何在版本控制中忽略?
在 .gitignore 中添加:
__pycache__/
*.pyc
4. 注意事项
跨版本兼容性:不同 Python 版本生成的 .pyc 文件互不兼容,若升级 Python,建议删除旧的缓存
源码依赖:.pyc 文件会记录源码的修改时间(mtime),若源码被修改,Python 会自动重新编译
上一篇
下一篇
python3 fastapi 简介
Python __name__ 使用
flask hello
python 项目目录结构
可发布Python包 项目示例
pytorch 快速入门