Pycharm为什么会自动创建__pycache__
__pycache__是 Python 存储编译后字节码(.pyc 文件)的目录,目的是提升代码运行效率,PyCharm 运行、调试 Python 文件时会触发 Python 解释器生成该目录。
- 存储字节码文件:Python 执行.py 文件时,会先将源码编译成机器可识别的字节码(.pyc),
__pycache__就是专门存放这些字节码的文件夹。
- 加速后续运行:首次运行后,下次再执行该文件时,Python 会直接读取已编译的.pyc 文件,无需重新编译源码,大幅节省启动和运行时间。
- 触发场景:PyCharm 中只要执行、调试 Python 代码,或导入其他.py 模块,都会触发 Python 解释器的编译行为,进而自动生成
__pycache__。
=============================================
Pycharm中 禁用 __pycache__的生成
__pycache__的生成由 Python 解释器控制,而非 PyCharm 本身,因此禁用它需要通过配置 Python 解释器的行为实现。以下是 3 种实用方法,可根据场景选择:
Python 解释器提供
-B参数(Bytecode 禁用),运行脚本时添加该参数可阻止生成
.pyc文件和
__pycache__目录。
在 PyCharm 中配置步骤:
- 打开运行 / 调试配置:点击顶部菜单栏
Run → Edit Configurations;
- 在左侧选择你要运行的脚本配置(如
main.py);
- 在右侧
Interpreter options(解释器选项)中输入-B;
- 点击
Apply保存,之后运行该脚本时将不再生成__pycache__。
(效果:仅对当前配置的脚本生效,不影响其他项目或脚本)
通过设置环境变量PYTHONDONTWRITEBYTECODE=1,可全局禁用 Python 的字节码生成功能。【这个可行】
配置方式:
-
系统级全局生效(适用于所有项目):
- Windows:右键 “此电脑”→“属性”→“高级系统设置”→“环境变量”,新建系统变量
PYTHONDONTWRITEBYTECODE,值设为1;
- macOS/Linux:在终端执行
export PYTHONDONTWRITEBYTECODE=1(临时生效),或写入~/.bashrc/~/.zshrc(永久生效)。
-
PyCharm 项目级生效(仅当前项目):
打开运行配置(同方法 1),在
Environment variables中点击
+,添加变量
PYTHONDONTWRITEBYTECODE,值设为
1。
如果只是想避免__pycache__被版本控制(如 Git)跟踪,或减少视觉干扰,可:
- 手动删除已有
__pycache__目录(直接删除即可,不影响代码运行);
- 在项目根目录创建
.gitignore文件,添加一行__pycache__/,让 Git 忽略该目录。
- 禁用
__pycache__会导致 Python 每次运行都重新编译源码,可能略微降低启动速度(尤其是大型项目),开发阶段影响较小,生产环境建议保留。
- 若后续需要恢复生成,只需移除
-B参数或删除对应环境变量即可。