繁体   English   中英

如何使用pickle文件组织Python项目?

[英]How to organize a Python project with pickle files?

我来自Java背景,而且是Python的全新。

现在我有一个Python项目,包含一些Python脚本和存储在Git中的pickle文件。 pickle文件是序列化的sklearn模型。

我想知道如何组织这个项目。 我认为我们不应该将pickle文件存储在Git中。 我们应该将它们存储为某处的二进制依赖项。

是否有意义 ? 存储Python项目的二进制依赖项的常用方法是什么

Git对二进制数据很好。 例如,许多项目在git repos中存储例如图像。

我想,经验法则是决定你的二进制文件是源材料,外部依赖项还是中间构建步骤。 当然,没有严格的规则,所以只需决定你对它们的看法。 以下是我的建议:

  1. 如果它们(可重复地)从某些东西生成,则.gitignore二进制文件并具有构建必要数据的脚本。 它可以是相同的,也可以是单独的回购 - 取决于它感觉最好的地方。

  2. 如果它们是从某些外部源获得的,例如外部下载,则适用相同的逻辑。 通常,我们不会在存储库中存储依赖项 - 我们只保留对它们的引用。 例如,我们不保留virtualenvs但只保留requirements.txt文件 - Java世界类比(粗略近似)就像没有.jars但只有pom.xml或build.gradle中的依赖项部分。

  3. 如果它们可以被认为是源材料,例如,如果您使用Python作为编辑器操作它们 - 不要担心文件的二进制特性,只需将它们放在存储库中即可。

  4. 如果它们不是真正的源材料,但它们的生成过程非常复杂或需要很长时间,并且文件不是要定期更新 - 我认为将它们放入其中并不是非常错误回购。 当然,留下关于如何生成文件的注释(README.txt或其他内容)是个好主意。

哦,如果文件很大(比如数百兆或更多),请考虑看一下git-lfs。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM