pla*_*etp 14 python compilation docker docker-build
我见过几个.dockerignore
Python 项目的文件示例,其中*.pyc
文件和/或__pycache__
文件夹被忽略:
**/__pycache__
*.pyc
Run Code Online (Sandbox Code Playgroud)
由于无论如何这些文件/文件夹都会在容器中重新创建,我想知道这样做是否是一个好习惯。
是的,这是推荐的做法。有几个原因:
在.dockerignore
您指定不会转到结果图像的文件时,这在构建最小图像时可能至关重要。粗略地说,字节码文件的大小等于实际文件的大小。字节码文件不用于分发,这就是为什么我们通常也将它们放入.gitignore
。
在 Python 3.x 的早期版本中,有几个与缓存相关的问题:
Python 在 .pyc 文件中缓存字节码的方案在具有多个 Python 解释器的环境中不能很好地工作。如果一个解释器遇到另一个解释器创建的缓存文件,它会重新编译源文件并覆盖缓存文件,从而失去缓存的好处。
从 Python 3.2 开始,所有缓存文件都以解释器版本为前缀,mymodule.cpython-32.pyc
并显示在__pychache__
目录下。顺便说一句,从 Python 3.8 开始,您甚至可以控制存储缓存的目录。当您限制对目录的写访问但仍希望从缓存使用中获益时,它可能很有用。
通常,缓存系统运行良好,但总有一天会出错。值得注意的是,如果 文件丢失,.pyc
将使用缓存的(位于同一目录中)文件代替文件。在实践中,这并不常见,但如果某些东西一直“存在”,考虑删除缓存文件是个好主意。当您在 Python 中试验缓存系统或在不同环境中执行脚本时,这可能很重要。.py
.py
很可能您甚至不需要考虑它,但缓存文件可能包含某种敏感信息。由于当前的实现,.pyc
文件中提供了实际文件的绝对路径。在某些情况下,您不想共享此类信息。
似乎与字节码文件交互是一种非常频繁的必要性,例如,django-extensions有适当的选项compile_pyc
和clean_pyc
.
归档时间: |
|
查看次数: |
3172 次 |
最近记录: |