首页 文章

Python发行版的用例有哪些?

提问于
浏览
4

我正在为我正在编写的Python包开发一个发行版,所以我可以在PyPI上发布它 . 这是我第一次使用distutils,setuptools,distribute,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发行版之外,Python发行版的用例是什么?我还在为这个发行版提供服务以及他们最关心的是什么?”

以下是我还没有想到的一些工作问题:

  • 在源代码分发中包含源代码控制(git)下的所有内容是否合理?在github时代,是否有人下载源代码分发以访问完整的项目源?或者我应该发布一个链接到我的github回购?不会包含所有内容会使分发变得臃肿,并且只需要安装它的人就可以下载更长的时间吗?

  • 我将在readthedocs.org上主持文档 . 在源代码分发中包含HTML版本的文档对我有意义吗?

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

1 回答

  • 3

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

    • 包裹的许可证

    • 一个测试套件

    • 文档(除了源代码外,可能还有像HTML这样的处理过的表单)

    • 可能是用于构建源代码分发的任何其他脚本

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

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

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

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

相关问题