【问题标题】:What are the use cases for a Python distribution?Python 发行版的用例是什么?
【发布时间】:2013-01-04 09:44:19
【问题描述】:

我正在为我正在编写的 Python 包开发一个发行版,以便发布 它在 PyPI 上。这是我第一次使用 distutils、setuptools、distribute、 pip,setup.py 和所有这些,我在学习曲线上有点挣扎 这比我预期的要陡峭:)

我在获取一些测试数据文件时遇到了一些问题 通过在 setup.py 中的 data_files 参数中指定它们来包含在 tarball 中,直到我在这里遇到另一个指向我的帖子 朝向MANIFEST.in 文件。就在那时我突然想到你是什么 包含在 tarball/zip 中(使用 MANIFEST.in)以及安装在 用户在执行 easy_install 或其他操作时的 Python 环境(基于 你在setup.py) 中指定的是两个非常不同的东西;一般来说有 tarball 中的内容比实际安装的要多得多。

这立即引发了我的代码气味,并意识到那里 一个发行版必须有多个用例;我一直专注于 只有一个我真正参与过,使用easy_install或pip安装一个 图书馆。然后我意识到我正在开发工作产品,而我只有一个 对我为之开发的最终用户有部分了解。

所以我的问题是:“Python 发行版的用例是什么? 除了将它安装在一个人的 Python 环境中?我还为谁服务 有了这个分布,他们最关心什么?”

以下是一些我尚未弄清楚的工作问题,这些问题与 答案:

  • 包含受源代码控制的所有内容是否明智? (git) 在源代码分发中? github时代,有没有人下载 获取完整项目源代码的源代码分发?或者我应该 只是发布我的 github 存储库的链接?不会包括一切膨胀的 分发并让只想下载的人花费更长的时间 安装它?

  • 我将在 readthedocs.org 上托管文档。它是否使任何 我觉得在源代码中包含文档的 HTML 版本 分布?

  • 是否有人使用python setup.py test 在源上运行测试 分配?如果是这样,他们扮演什么角色,他们处于什么情况?一世 不知道我是否应该费心去做这项工作,如果我这样做了,该做谁 它的工作原理。

【问题讨论】:

    标签: python pip setuptools distutils distribute


    【解决方案1】:

    您可能希望包含在源代码分发中但可能不安装的一些内容包括:

    • 包的许可证
    • 一个测试套件
    • 文档(可能是经过处理的表单,如 HTML 以及源代码)
    • 可能是用于构建源代码分发的任何其他脚本

    这通常是您在版本控制中管理的大部分或全部内容,可能还有一些生成的文件。

    当这些文件在线或通过版本控制可用时,您这样做的主要原因是让人们知道他们拥有与他们正在运行的代码相匹配的文档或测试版本。

    如果您只在线托管最新版本的文档,那么它们可能对出于某种原因必须使用旧版本的人没有用处。并且版本控制中提示的测试套件可能与源代码分发中的代码版本不兼容(例如,如果它测试从那时起添加的功能)。为了获得正确版本的文档或测试,他们需要梳理版本控制以寻找与源代码分发相对应的标签(假设开发人员打扰标记树)。在源代码分发中提供可用的文件可以避免这个问题。

    对于想要运行测试套件的人,我有许多 Python 模块打包在各种 Linux 发行版中,并且偶尔会收到与他们环境中的测试失败相关的错误报告。当我遇到错误并想检查外部代码在我的环境中是否按照作者期望的方式运行时,我也使用了其他人模块的测试套件。

    【讨论】:

    • 感谢 James,确实很有帮助 :)
    猜你喜欢
    • 2017-08-28
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2011-08-09
    • 2016-09-30
    相关资源
    最近更新 更多