我正在为我正在编写的 Python 包开发一个发行版,以便我可以发布
它在 PyPI 上。这是我第一次使用 distutils、setuptools、distribute、
pip、setup.py 等等,我在学习曲线上有点挣扎
这比我预期的要陡一些:)
我在获取一些测试数据文件时遇到了一些麻烦
通过在中指定它们来包含在 tarball 中data_files
setup.py 中的参数,直到我在这里遇到另一篇文章指出我
朝向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
对源运行测试
分配?如果有,他们扮演什么角色,处于什么境地?我
不知道我是否应该费心去做这项工作,如果我这样做,该让谁做
它适用于。
您可能希望包含在源代码发行版中但可能不安装的一些内容包括:
- 包的许可证
- 测试套件
- 文档(除了源代码之外,还可能是经过处理的表单,例如 HTML)
- 可能用于构建源代码分发的任何其他脚本
通常,这将是您在版本控制中管理的大部分或全部内容,也可能是一些生成的文件。
当这些文件在线可用或通过版本控制提供时,您要执行此操作的主要原因是让人们知道他们拥有与他们正在运行的代码相匹配的文档或测试版本。
如果您仅在线托管最新版本的文档,那么它们对于因某种原因必须使用旧版本的人来说可能没有用。并且版本控制中提示上的测试套件可能与源代码分发中的代码版本不兼容(例如,如果它测试此后添加的功能)。为了获得正确版本的文档或测试,他们需要梳理版本控制,寻找与源代码分发相对应的标签(假设开发人员费心标记树)。在源代码分发中提供可用文件可以避免此问题。
对于想要运行测试套件的人来说,我将许多 Python 模块打包在各种 Linux 发行版中,并且偶尔会收到与其环境中的测试失败相关的错误报告。当我遇到错误并想检查外部代码在我的环境中是否按照作者的预期运行时,我也使用了其他人模块的测试套件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)