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

标签 python git pickle

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

现在我有了一个 Python 项目,它由一些 Python 脚本和存储在 Git 中的 pickle 文件组成。 pickle 文件已序列化 sklearn模型。

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

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

最佳答案

Git 非常适合处理二进制数据。例如,许多项目存储例如git repos 中的图像。

我想,经验法则是决定您的二进制文件何时是源 Material 、外部依赖项或中间构建步骤。当然,没有严格的规定,所以只要决定你对它们的感受。以下是我的建议:

  1. 如果它们是(可重复地)从某物生成的,.gitignore 二进制文件并具有构建必要数据的脚本。它可以在同一个存储库中,也可以在单独的存储库中 - 取决于感觉最好的位置。

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

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

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

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

关于python - 如何使用 pickle 文件组织 Python 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831254/

相关文章:

python - 使用 pickle.load() 时没有名为 dill 的模块

python - Pickle:读取和创建空文件

python - 我可以像将 .mat 文件拖放到 Matlab 中一样将 pickle 文件拖放到 PyCharm 中吗?

Python Selenium ChromeDriver 错误消息 : EGL_NOT_INITIALIZED

python - Boost.Python boost::shared_ptr 没有通过值转换器找到 python

git - 恢复 git reset --soft

git - 恢复分支 A 上的提交,稍后将 merge 到 B。提交应该留在 B

git submodule update - 为什么从顶层开始

python - python列表中最常见的子列表

python - Python 中的线与线相交与 numpy