You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python项目运行生成__pycache__文件夹原因及处理方法咨询

关于Python __pycache__文件夹相关问题解答

核心疑问:__pycache__的生成来源

__pycache__是Python 3.2及以上版本的解释器自动生成的文件夹,用于存储项目中被导入模块的编译后字节码文件。
Python属于解释型语言,但实际运行时会先将.py源码编译为CPython可识别的字节码,为了避免每次运行都重复编译、提升项目启动速度,解释器会把编译好的字节码以.pyc为后缀存入该文件夹,文件名会携带对应解释器版本标识,例如xxx.cpython-310.pyc。只有对应.py源码被修改后,解释器才会重新编译更新对应的pyc文件。
注意:直接作为入口执行的顶层脚本(例如你运行python main.py时的main.py)不会生成对应的pyc文件,只有被导入的模块才会生成字节码。

为什么当前项目才生成、其他工作区无该文件夹

可能的原因如下:

  • 其他工作区用的是Python 3.2以下的老版本,老版本Python不会生成__pycache__文件夹,会直接把pyc文件和对应.py源码放在同目录
  • 其他工作区运行时默认禁用了字节码写入:例如运行脚本时加了-B参数,或是系统环境变量中配置了PYTHONDONTWRITEBYTECODE=1
  • 其他工作区的代码都是单脚本运行,没有导入同项目内的自定义模块,不会触发字节码生成逻辑
  • 其他工作区的VSCode配置或.gitignore规则已经将__pycache__隐藏,并非没有生成只是不可见
  • 其他工作区配置了虚拟环境统一存储字节码的规则,字节码没有写入项目根目录

移除/隐藏__pycache__的操作方法

完全禁止生成__pycache__(会降低项目启动速度,不推荐)

  • 单次运行禁用:执行脚本时添加-B参数,命令格式为python -B 你的脚本文件名.py
  • 全局永久禁用:给系统添加环境变量PYTHONDONTWRITEBYTECODE=1,所有Python运行场景都不会生成字节码
  • 单项目禁用(Python 3.8+支持):在项目入口文件的最开头添加如下代码,注意要放在所有自定义模块导入语句之前:
import sys
sys.dont_write_bytecode = True

手动删除现有__pycache__文件夹后,下次运行项目就不会再生成。

VSCode中隐藏__pycache__(推荐,不影响运行效率仅隐藏视图)

  • 全局隐藏所有工作区的__pycache__:打开VSCode设置(快捷键Ctrl+,/Cmd+,),搜索files.exclude,点击「添加项」,填入**/__pycache__,值设为true即可
  • 仅隐藏当前项目的__pycache__:在项目根目录新建.vscode文件夹,在其中新建settings.json文件,写入如下内容:
{
  "files.exclude": {
    "**/__pycache__": true
  }
}

如果你的项目用Git管理,建议在项目根目录的.gitignore文件中加入__pycache__/,避免将字节码提交到代码仓库,这是Python项目的通用规范。

相关运行机制补充

  • VSCode本身不会生成__pycache__文件夹,该文件夹完全由Python解释器运行代码时生成,VSCode仅负责调用你配置的对应路径的Python解释器执行代码
  • __pycache__中的pyc是二进制文件,无需人工修改,手动删除后下次运行项目会自动重新生成,除非你禁用了字节码写入
  • 不同版本的Python解释器生成的pyc文件不通用,如果你切换解释器版本运行同一个项目,__pycache__中会生成对应不同版本的pyc文件

内容的提问来源于stack exchange,提问作者Samuel Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:57:04