我应该添加Python';s pyc文件到.dockrignore?
我已经看到了一些Python项目中的我应该添加Python';s pyc文件到.dockrignore?,python,docker,compilation,docker-build,Python,Docker,Compilation,Docker Build,我已经看到了一些Python项目中的.dockerginore文件示例,其中*.pyc文件和/或\uuuuupycache\uuuu文件夹被忽略: **/__pycache__ *.pyc 由于这些文件/文件夹将在容器中重新创建,我想知道这样做是否是一种好的做法。是的,这是一种推荐做法。有几个原因: 减小结果图像的大小 在.dockrignore中,您指定的文件不会进入结果图像,这在生成最小图像时可能非常重要。粗略地说,字节码文件的大小等于实际文件的大小。字节码文件不用于分发,这就是为什么我们
.dockerginore
文件示例,其中*.pyc
文件和/或\uuuuupycache\uuuu
文件夹被忽略:
**/__pycache__
*.pyc
由于这些文件/文件夹将在容器中重新创建,我想知道这样做是否是一种好的做法。是的,这是一种推荐做法。有几个原因:
减小结果图像的大小
在.dockrignore
中,您指定的文件不会进入结果图像,这在生成最小图像时可能非常重要。粗略地说,字节码文件的大小等于实际文件的大小。字节码文件不用于分发,这就是为什么我们通常也将它们放入.gitignore
中
缓存相关问题
在Python 3.x的早期版本中,有几个与缓存相关的:
Python在.pyc文件中缓存字节码的方案效果不佳
在具有多个Python解释器的环境中。如果一个口译员
如果遇到由另一个解释器创建的缓存文件,则
重新编译源并覆盖缓存文件,从而丢失
缓存的好处
从Python 3.2开始,所有以解释器版本为前缀的缓存文件都是mymodule.cpython-32.pyc
,并显示在\uuuuuupychache\uuuu
目录下。顺便说一下,从Python3.8开始,您甚至可以创建一个存储缓存的目录。当您限制对目录的写访问,但仍希望从缓存使用中获得好处时,它可能很有用
通常,缓存系统工作正常,但总有一天会出问题。值得注意的是,如果缺少.py
文件,则将使用缓存的.py
(位于同一目录中)文件而不是.py
文件。在实践中,这种情况并不常见,但如果某些东西一直在“那里”,考虑删除缓存文件是一个好的观点。在Python中试验缓存系统或在不同环境中执行脚本时,这可能很重要
安全原因
很可能您甚至不需要考虑它,但缓存文件可能包含某种敏感信息。由于当前的实现,在.pyc
文件中显示了实际文件的绝对路径。有些情况下,您不想共享此类信息
与字节码文件交互似乎是一种非常频繁的必要性,例如,有适当的选项和。我想知道为什么不这样做?也许是一个自以为是的问题,但我的答案是肯定的,特别是如果有变化的话。只需让解释器在每个客户端上缓存
pyc
s,以确保运行最新的代码。@Sraw似乎是不必要的工作。此外,我还可以想到某些情况下,进程可能没有足够的权限创建这些文件。