在我的某些Python脚本中,我需要对所使用模块的版本具有良好的可追溯性。到目前为止,我一直在克隆目录中的模块的存储库,其名称指示模块的位置,例如:
mkdir 6107ea5a98392abccf36d37c573aba955b8a7b46
git clone /path/to/some_module 6107ea5a98392abccf36d37c573aba955b8a7b46
cd 6107ea5a98392abccf36d37c573aba955b8a7b46
git checkout 6107ea5a98392abccf36d37c573aba955b8a7b46
在我的脚本中,我输入以下行:
import sys
sys.path.insert(0, '/.../6107ea5a98392abccf36d37c573aba955b8a7b46/.../')
import some_module
这样,当我查看脚本时就知道我正在使用哪个版本的some_module
。
但是这样做非常耗时且容易出错,例如,例如,如果我意外地将我的一个文件夹签出到错误的提交中。
是否有更好的方法在使用的模块版本的python脚本中保留硬编码跟踪?我正在考虑编写一个使用GitPython的模块,该模块将在需要时自动执行我上面描述的操作。该模块可以这样加载:
my_importer.import('some_module', '6107ea5a98392abccf36d37c573aba955b8a7b46')
但是也许这样的事情已经存在,或者也许有更好的方法来实现这一目标...?