__pycache__文件夹由Python解释器自动生成,非PyCharm创建;其生成源于模块导入时的字节码编译,禁用需设置环境变量PYTHONDONTWRITEBYTECODE=1并重启IDE。

__pycache__ 文件夹不是 PyCharm 生成的,而是 Python 解释器在导入模块时自动创建的。PyCharm 只是调用了 Python,真正触发编译和缓存行为的是解释器本身。所以“关闭 PyCharm 自动生成”这个说法本身不成立——你得让 Python 解释器不写缓存。
为什么加 PYTHONDONTWRITEBYTECODE=1 能生效
这个环境变量会告诉 CPython:别生成 .pyc,也别建 __pycache__ 目录。它作用于整个解释器进程,无论你是从终端、PyCharm 还是命令行运行脚本,只要该变量被加载,缓存就停。
PyCharm 中设置方式如下:
- 打开 Run → Edit Configurations…
- 选中你要配置的运行配置(比如 Python script 或 pytest)
- 在 Environment variables 栏里添加:
PYTHONDONTWRITEBYTECODE=1 - 勾选 Include system environment variables(确保不被覆盖)
注意:这个设置只对「通过该配置运行的代码」有效。如果你用 PyCharm 的 Python Console、Debug 控制台、或右键 Run 'xxx.py' 但没改默认配置,那些场景仍会生成 __pycache__。
PyCharm 的 Python Console 和 Tests 怎么统一禁用
Python Console 和测试运行器(pytest/unittest)默认不读取你上面设的 Run Configuration,它们有独立设置路径:对于 Python Console:
- File → Settings → Tools → Python Console
- 在 Environment variables 输入框里手动填入
PYTHONDONTWRITEBYTECODE=1
对于 Tests:
PyCharm 2026.2是 JetBrains PyCharm 的指定版本安装包,下载地址指向官方 Windows 安装包直链,可用于旧项目兼容、版本回退和环境测试。
- File → Settings → Tools → Python Integrated Tools
- 找到 Testing → pytest / unittest 配置区
- 点击 Environment variables 右侧的
…按钮,添加PYTHONDONTWRITEBYTECODE=1
改完后重启 PyCharm 才能确保所有子进程都加载新变量。
为什么不用 -B 参数替代环境变量
python -B script.py 确实也能禁止缓存,但在 PyCharm 里很难全局生效:
- Run Configuration 的 Interpreter options 字段只影响单次执行,不覆盖 Console/Test
- PyCharm 启动 Console 时固定调用
python -i,没法硬塞-B - 某些插件(如 Jupyter 集成)可能忽略命令行参数,但一定读环境变量
所以环境变量是更可靠、更统一的控制点。
清理已有 __pycache__ 并防止 Git 提交
设置完环境变量后,旧的 __pycache__ 不会自动消失,得手动清:
- 用 PyCharm 自带的 Find in Path(
Ctrl+Shift+F),搜__pycache__,勾选 File mask 为__pycache__,批量删除 - 或在终端跑:
find . -type d -name '__pycache__' -delete
同时确认项目根目录的 .gitignore 包含这一行:__pycache__/。否则即使不生成新缓存,已提交的历史记录仍会干扰协作。

















