使用Git时处理Pyc文件.
对象自动生成字节码,Python开发人员对此很熟悉 .py
文件,由解释器执行. 该字节码存储在 .pyc
文件,通常在其各自源文件的同一目录中. The .pyc
生成可以在执行主Python脚本时发生,也可以在第一次导入模块时发生.
例如,在许多Python web框架中,当我们创建 views.py
,一个包含视图逻辑的文件,我们很可能会得到一个 views.pyc
在运行应用程序的实例后,在同一目录下创建.
As developers, 我们经常使用Git处理大型代码库, 以及团队中有许多开发人员的项目. 这意味着同时开发了许多功能, 因此,我们必须频繁切换分支以与其他开发人员配对, 或者检查和测试别人的代码. 根据两个分支之间的差异,我们可以得到 .pyc
来自其他分支的文件,这可能导致意外的行为.
Git是一个著名的源代码管理工具,它巧妙地提供了钩子, 一种在发生某些重要操作时触发自定义脚本的方法. 我们可以为最常用的操作添加钩子, 比如在犯罪之前或之后, pushing, rebasing, merging, and similar.
其中一个可用的钩子是“post-checkout”钩子, 哪个在签出另一个分支或特定提交后被触发. 我们可以包含我们的代码来清理 .pyc
“签出后”钩子中的文件. All Git projects have .git
文件夹在项目的根目录下,从那里我们只需要编辑(或创建新的)文件 .git/hooks/post-checkout
,添加以下代码:
#!/bin/sh
find . -type f -name "*.py[co]" -delete
find . -type d -name "__pycache__" -delete
这是针对Linux和Mac的. 在Windows上,首先我们需要安装Cygwin,这样Git才能以shell的形式执行钩子脚本. 然后我们需要稍微改变一下命令:
#!/bin/sh
find . -type f -name "*.py[co]" | xargs rm
find . -type d -name "__pycache__" | xargs rm -rf
调用Python解释器时 -O
标志,优化后的代码生成并存储在 .pyo
files. 因此,我们的命令检查 .pyc
or .pyo
文件和删除它们(*.py[co]
). Python 3将编译后的字节码存储在 __pycache__
目录,所以我们包含了一个命令来删除它们.
In the end, 在Linux和Mac上保存钩子文件后, 我们需要确保给它添加了执行权限:
$ chmod +x .git/hooks/post-checkout