我来自Java背景,而且是Python的全新。
现在我有一个Python项目,其中包含一些存储在Git中的Python脚本和pickle
文件。 pickle文件是序列化的sklearn模型。
我想知道如何组织这个项目。我认为我们不应该将pickle文件存储在Git中。我们应该将它们存储在某处的二进制依赖项中。
有意义吗?存储Python项目的二进制依赖项的常用方法是什么
答案 0 :(得分:4)
Git对二进制数据很好。例如,许多项目存储例如git repos中的图像。
我想,经验法则是决定你的二进制文件是源材料,外部依赖项还是中间构建步骤。当然,没有严格的规则,所以只需决定你对它们的看法。以下是我的建议:
如果他们(可重复地)从某些内容生成,.gitignore
二进制文件并具有构建必要数据的脚本。它可以是相同的,也可以是单独的回购 - 取决于它感觉最好的位置。
如果从某些外部来源获得相同的逻辑,例如,外部下载。通常,我们不会在存储库中存储依赖项 - 我们只保留对它们的引用。例如。我们不保留virtualenvs但只有items.txt文件 - Java世界类比(粗略近似)就像没有.jars但只有pom.xml或build.gradle中的依赖项部分。
< / LI>如果可以将它们视为源材料,例如如果你用Python作为编辑器操纵它们 - 不要担心文件&#39;二元性质,只需将它们存放在您的存储库中。
如果它们不是真正的源材料,但它们的生成过程非常复杂或需要很长时间,而且这些文件并不是定期更新的 - 我认为它将它们放在回购中是非常错误的。当然,留下关于文件生成方式的说明(README.txt或其他内容)是个好主意。
哦,如果文件很大(比如几百兆字节或更多),请考虑看一下git-lfs。