python - 什么是__pycache__?

标签 python python-3.x caching

据我了解,缓存是类似文件的加密文件。

我们如何处理 __pycache__ 文件夹?是我们提供给人们的东西而不是我们的源代码吗?它只是我的输入数据吗?这个文件夹不断被创建,它是做什么用的?

最佳答案

当您在 Python 中运行程序时,解释器首先将其编译为字节码(这是过于简单化了)并将其存储在 __pycache__ 文件夹中。如果您在那里查看,您会发现一堆文件共享您项目文件夹中的 .py 文件的名称,只有它们的扩展名将是 .pyc.pyo。这些分别是程序文件的字节码编译版本和优化字节码编译版本。

作为程序员,您基本上可以忽略它...它所做的只是让您的程序启动得更快一点。当您的脚本更改时,它们将被重新编译,如果您删除文件或整个文件夹并再次运行您的程序,它们将重新出现(除非您特别禁止该行为)。

当您将代码发送给其他人时,通常的做法是删除该文件夹,但您是否这样做并不重要。当您使用版本控制 (git) 时,此文件夹通常列在忽略文件 (.gitignore) 中,因此不包括在内。

如果您使用的是 CPython(这是最常见的,因为它是引用实现)并且您不想要该文件夹,那么您可以通过使用 -B 标志启动解释器来禁止它,例如

python -B foo.py

另一个选项,如 tcaswell 所述,是将环境变量 PYTHONDONTWRITEBYTECODE 设置为任何值(根据 Python 的手册页,任何“非空字符串”)。

关于python - 什么是__pycache__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16869024/

相关文章:

Python quiver 和 pcolormesh 没有完全正确排列

python - 关于继承和 super()

python-3.x - 如何使python源代码的编译可重现

python - 如何在Python 3中映射两个不同长度的列表?

firebase - 如何在 Flutter 中缓存 Firebase 数据?

python - 如何使用 p12 证书连接到 LDAP 服务器

python - 如何使用具有多重继承的数据类特殊方法?

python 多处理: processes don't work

java - JedisPoolConfig 不可分配给 GenericObjectPoolConfig

python - Django REST Framework 缓存错误