PyCharm 不生成 __pycache__,它是 Python 解释器导入模块时自动创建的;可通过环境变量 PYTHONDONTWRITEBYTECODE=1 禁用字节码缓存,或清理 .idea/shelf、trashes 及 JetBrains 缓存目录。

PyCharm 运行时生成的 __pycache__ 目录怎么禁用
PyCharm 本身不主动创建 __pycache__,它是 Python 解释器在导入模块时自动生成的。但 PyCharm 启动脚本、运行配置或调试会话会触发 Python 执行,从而间接产生这些目录。要减少这类临时文件,关键不是“关 PyCharm”,而是控制 Python 的字节码缓存行为:
- 在运行配置中添加环境变量:
PYTHONDONTWRITEBYTECODE=1(适用于当前 Run/Debug 配置) - 全局禁用:在终端启动 PyCharm 前执行
export PYTHONDONTWRITEBYTECODE=1(macOS/Linux),或 Windows 中设系统环境变量 - 注意:
__pycache__不影响功能,但会干扰 Git 提交或磁盘清理;禁用后仅降低首次导入速度,无实质性能损失
PyCharm 自己生成的临时文件在哪?如何清理
PyCharm 自身产生的临时文件主要分两类:项目级缓存(.idea 下的 shelf、workspace.xml 等)和系统级临时数据(如日志、快照)。它们不会自动删除,但可安全清理:
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- 手动清除:菜单
File → Invalidate Caches and Restart → Invalidate and Restart,这会清空system目录下的所有缓存(路径类似~/Library/Caches/JetBrains/PyCharm2023.3或%LOCALAPPDATA%\JetBrains\PyCharm2023.3) - 不建议直接删
.idea文件夹——它含运行配置、编码设置等,删了要重配;但可放心删其中的shelf(临时代码片段)和trashes(已删文件记录)子目录 - PyCharm 不管理
/tmp或C:\Users\XXX\AppData\Local\Temp里的内容,那些是 OS 或 Python 进程写的,需单独清理
运行 Python 脚本时产生的 tempfile 文件怎么避免残留
如果你的代码用了 tempfile 模块(比如 tempfile.mktemp() 或 tempfile.NamedTemporaryFile(delete=False)),那临时文件是否残留取决于你是否显式调用 os.remove() 或依赖上下文管理器。PyCharm 无法替你管理这部分逻辑:
- 安全写法:用
with tempfile.TemporaryFile() as f:—— 退出 with 块即自动销毁 - 危险写法:
tempfile.mktemp()已弃用,且不自动清理;NamedTemporaryFile(delete=False)必须手动os.unlink() - PyCharm 的 Console 或 Python Console 运行时,若脚本异常退出,
delete=False的文件大概率残留;建议开发阶段加try/finally保底清理
为什么关掉 “Auto-save” 还有临时文件?
自动保存(Save files on frame deactivation)只控制源码文件是否写入磁盘,和运行时生成的临时文件无关。很多人混淆这两类“临时”:
-
Auto-save影响的是你编辑的.py文件是否被提前落盘 - 运行时临时文件(
__pycache__、tempfile输出、pytest 的.pytest_cache)由 Python 解释器或测试框架生成,PyCharm 只是触发者 - 真正想“零临时文件”,得组合设置:禁用字节码 + 重构
tempfile使用方式 + 在 pytest 配置里加--no-cov-cache(如果用了 coverage)
Run 和 Debug 是两个独立进程,Debug 模式下即使你改了 PYTHONDONTWRITEBYTECODE,某些断点机制仍可能绕过该变量——此时临时文件更难预测。真要彻底干净,优先从代码层控制 tempfile 生命周期,而不是指望 IDE 层面一刀切。

















