Python 的 __pycache__
2024-06-02
#python
前言
在实际运行 Python 项目过程中时长可以看见一个名为
__pycache__
的文件夹,那么就有这几个问题了:__pycache__
缓存了什么东西?__pycache__
的目的是什么?__pycache__
会在什么时候会产生?__pycache__
吗?__pycache__
运行的机制是什么样子的?__pycache__
的那些事首先可以看一下官方文档对
__pycache__
的解释上述文档可以回答最初的几个问题:
__pycache__
缓存了模块的编译版本,其命名格式为module.version.pyc
__pycache__
是为了提升加载模块的速度,并不能提升运行速度。至于剩下的几个问题,我们可以先看一下 PEP 3147 中的流程图
从流程图中,不难注意到,当我们引入一个模块的时候,在运行过程中,会检验在
__pycache__
文件夹中是否存在对应的pyc
文件,如果不存在则会尝试创建,所以__pycache__
会在什么时候产生呢?当我们在运行 Python 程序的时候它就会产生。__pycache__
的运行机制在在流程图被描述的很清楚,这里也不在过多赘述。如果在实际过程中,我们不喜欢出现
__pycache__
文件夹和pyc
文件,该如何设置呢?只需要设置
PYTHONDONTWRITEBYTECODE
环境变量为任意非空字符串,即可避免__pycache__
文件的生成,亦或python -B xxx.py
。 也有pyclean
库被用来专门删除__pycache__
的文件的。参考