python项目中的__pycache__文件到底是什么?
大熊课堂
2025年11月04日 16:42
收录于文集
共14篇
Python进阶

Q:为什么我的Python项目下总有一个__pycache__文件?

Q:它到底是什么?

Q:又有什么用呢?

这是很多同学问我的一个问题,今天我们就来详细解释一下。

pycache 文件是什么

__pycache__从这个单词的意思我们就能猜测出它是python的缓存文件。那么缓存的什么内容?我们可以打开看一下。发现这里存储的都是后缀为.pyc的文件。

.pyc 文件是 编译后的字节码文件(Bytecode)。你可以会发出疑问了,

python不是动态编程语言吗? 不是不需要我们编译吗?

对的,python是动态编程语言,但是它和所有编程语言一样,都需要编译成计算机能运行的字节码。只是说,Python 解释器在执行 .py 文件时自动生成,而不需要我们人为地编译。

__pycache__文件中存放的.pyc 文件就是 编译后的字节码文件(Bytecode)。例如这里“A.cpython-311.pyc”就表示这个A文件经过cpython3.11编译后生成的字节码。

pychache文件是怎么生成的

Q:那么这个pychache文件是这么生成的呢?

Q:为什么有一些python项目中存在,而有一些却没有呢?

只有当 Python 解释器需要缓存模块的编译结果时,才会生成 __pycache__ 文件夹。也就是说,触发点在于 “import” 操作

下面来举例说明。我们的目录结构如下:

project/

├── main.py

└── utils.py

其中main.py文件内容如下:

from utils import sum

total = sum()

print(total)

执行:

python main.py

此时会在项目目录下会生成:

__pycache__

--| utils.cpython-311.pyc

✅ 注意: 这里只会为 utils.py 生成 .pyc,不会为 main.py 生成,因为 main.py 是“主脚本”,不是被 import 的模块。

我们用一张流程图来看下什么情况下生成了pychache文件。

从上面的流程图我们可以看出,当pychache文件夹中已经存在编译后的.pyc文件时,下次导入时就不需要再重复编译,这样就加快启动速度。这就是它的优势。

📢:小伙伴需要注意的是,在项目中,.pyc 文件可以放心删除(运行时会重新生成)。通常使用git版本控制时,会在 .gitignore 里加上,不要上传相应缓存文件。

__pycache__/

*.pyc