| title | Python 代码修改不生效 — stale .pyc 缓存 | ||||
|---|---|---|---|---|---|
| domain | devops | ||||
| tags |
|
改了 Python 文件后运行,行为还是旧的。函数返回值、错误信息、path 等都没有改变。
Python 的 __pycache__ 目录缓存了编译后的 .pyc 文件。如果源文件修改时间没有正确更新(常见于 git checkout、文件复制、WSL/NTFS 文件系统),Python 会加载旧的 .pyc。
# 1. 删除所有 __pycache__
find . -type d -name __pycache__ -exec rm -rf {} +
# 2. 或针对单个文件
rm -rf path/to/module/__pycache__
# 3. 使用 PYTHONDONTWRITEBYTECODE 防止缓存
export PYTHONDONTWRITEBYTECODE=1
# 4. 验证:对比源码和缓存
python -c "import your_module; print(your_module.__file__)"
# 如果是 .pyc 结尾,说明加载的是缓存版# 在开发时禁用字节码缓存
echo 'export PYTHONDONTWRITEBYTECODE=1' >> ~/.bashrc