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

行星:

我已经看到了一些.dockerignorePython项目文件示例,其中*.pyc文件和/或__pycache__文件夹被忽略:

**/__pycache__
*.pyc

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

滑稽人

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

缩小结果图像的大小

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

缓存相关问题

在早期版本的Python 3.x中,存在一些与缓存有关的问题

Python在.pyc文件中缓存字节码的方案在具有多个Python解释器的环境中效果不佳。如果一个解释程序遇到另一个解释程序创建的缓存文件,它将重新编译源文件并覆盖该缓存文件,从而失去缓存的好处。

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

通常,缓存系统可以正常运行,但是总有一天可能会出现问题。值得注意的是,如果缺少.pyc.py文件,将使用缓存的(位于同一目录中)文件代替该文件.py实际上,这并不常见,但是如果某些东西持续存在,考虑删除缓存文件将是一个好主意。当您尝试使用Python缓存系统或在不同环境中执行脚本时,这一点可能很重要。

安全原因

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


似乎与字节码文件进行交互是非常常见的必要,例如django-extensions具有适当的选项compile_pycclean_pyc

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该将Django admin静态文件添加到git repo吗?

我应该将.idea / jarRepositories.xml添加到gitignore吗?

我应该将组件添加到JFrame或它的contentPane吗?

我应该将go dep vendor /添加到.gitignore吗?

我应该将google-services.json(来自Firebase)添加到我的存储库中吗?

我应该将Visual Studio 2015 .vs文件夹添加到源代码管理吗?

Firebase:我应该将GoogleService-Info.plist添加到.gitignore吗?

如何将项目添加到.dockerignore?

我应该将已删除的文件添加到舞台区域吗?

我应该将.idea / workspace.xml添加到gitignore吗?

我应该将sass源映射添加到我的git repo吗?

Symfony:我应该将rabbitmq:consumer命令添加到crontab吗?

我应该将Pod添加到VCS吗?

dockerfile可以放在.dockerignore吗?

我可以将环境变量添加到python logger ini文件配置中吗?

python sprite list如何工作?我可以将精灵坐标添加到列表中吗?

.dockerignore通常应该是.gitignore的超集吗?

我可以将更改的文件添加到已经合并的Gerrit吗?

我们可以控制.dockerignore文件中内容的区分大小写吗?

如果没有它,我应该将RecyclerView依赖项添加到gradle吗?

我可以将.avi文件添加到iTunes而不进行转换吗?

将Postgres垃圾箱添加到PATH:我应该“导出”吗?

我应该将密钥库文件添加到版本控制中吗?

我可以手动将jar文件添加到android私有库吗?

我知道您可以将HTML添加到RSS 2.0,但是您应该添加整个页面吗?

我可以将Twig文件类型添加到Linux吗?

我可以将SVG文件中的动画添加到Android启动屏幕中吗?

我应该将 __init__.py 添加到 git 存储库吗?

我应该将 .swiftpm 添加到 gitignore 吗?