gpt4 book ai didi

python - 我应该将Python的pyc文件添加到.dockerignore吗?

转载 作者:行者123 更新时间:2023-12-02 09:33:51 26 4
gpt4 key购买 nike

我见过几个 Python 项目的 .dockerignore 文件示例,其中 *.pyc 文件和/或 __pycache__ 文件夹被忽略:

**/__pycache__
*.pyc

由于无论如何都会在容器中重新创建这些文件/文件夹,我想知道这样做是否是一个好习惯。

最佳答案

是的,这是推荐的做法。原因有以下几个:

减小生成图像的大小

.dockerignore中,您指定不会转到生成图像的文件,这在构建最小图像时可能至关重要。粗略地说,字节码文件的大小等于实际文件的大小。字节码文件不适合分发,这就是为什么我们通常也将它们放入 .gitignore 中。

<小时/>

缓存相关问题

在Python 3.x的早期版本中,有几个与缓存相关的issues :

Python’s scheme for caching bytecode in .pyc files did not work wellin environments with multiple Python interpreters. If one interpreterencountered a cached file created by another interpreter, it wouldrecompile the source and overwrite the cached file, thus losing thebenefits of caching.

自 Python 3.2 起,所有缓存文件都以解释器版本为前缀 mymodule.cpython-32.pyc 并显示在 __pychache__ 目录下。顺便说一下,从 Python 3.8 开始你甚至可以 control将存储缓存的目录。当您限制对目录的写访问但仍希望获得缓存使用的好处时,它可能很有用。

通常情况下,缓存系统运行良好,但有一天可能会出现问题。值得注意的是,如果 .py (位于同一目录中)文件,将使用缓存的 .pyc 文件而不是 .py 文件。 > 文件丢失。在实践中,这种情况并不常见,但如果有些东西一直“存在”,那么考虑删除缓存文件是一个好点。当您在 Python 中试验缓存系统或在不同环境中执行脚本时,这可能很重要。

<小时/>

安全原因

很可能您甚至不需要考虑它,但缓存文件可能包含某种敏感信息。由于当前的实现,.pyc 文件中提供了实际文件的绝对路径。在某些情况下,您不想共享此类信息。

<小时/>

似乎与字节码文件交互是相当频繁的必要,例如,django-extensions有适当的选择compile_pycclean_pyc .

关于python - 我应该将Python的pyc文件添加到.dockerignore吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59684674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com