Python发行版的用例有哪些?

时间:2013-01-21 10:43:38

标签: python pip setuptools distutils distribute

我正在为我正在编写的Python包开发一个发行版,所以我可以发布 它在PyPI上。这是我第一次使用distutils,setuptools,分发, pip,setup.py以及所有这些,我正在努力学习曲线 这比我预期的要陡峭得多:)

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

这立刻引发了我的代码味道,并意识到那里 必须有多个用例才能进行分发;我一直注意到了 只有一个我真的参与过,使用easy_install或pip来安装 图书馆。然后我意识到我正在开发工作产品,我只有一个 部分了解我正在开发的最终用户。

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

以下是我尚未想到的一些工作问题 回答:

  • 包含受源代码控制的所有内容是否合理 (git)在源代码发行中?在github时代,有没有人下载 用于访问完整项目源的源代码分发?或者我应该 只是发布一个链接到我的github回购?不会包括一切膨胀的 分发并为需要的人下载花费更长的时间 安装吗?

  • 我将在readthedocs.org上主持文档。它有没有做到 我觉得在源代码中包含HTML版本的文档 分配

  • 是否有人使用python setup.py test在源上运行测试 分配?如果是这样,他们扮演什么角色,他们处于什么样的境地?一世 不知道我是否应该为完成这项工作而烦恼,如果我这样做,是谁做的 它适用于。

1 个答案:

答案 0 :(得分:3)

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

  • 包裹的许可证
  • 测试套件
  • 文档(可能是除了源代码之外的HTML等处理过的表单)
  • 可能用于构建源代码分发的任何其他脚本

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

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

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

对于想要运行测试套件的人,我在各种Linux发行版中打包了许多我的Python模块,偶尔会获得与其环境中的测试失败相关的错误报告。当我遇到一个bug时,我还使用了其他人模块的测试套件,并想检查外部代码是否像我作者在环境中所期望的那样。