我正在为我正在编写的 Python 包开发一个发行版,以便可以将其发布在 PyPI 上。这是我第一次使用 distutils、setuptools、distribute、pip、setup.py 和所有这些,我正在努力学习曲线,它比我预期的要陡峭一些 :)
通过在 setup.py的参数中指定它们来将我的一些测试数据文件包含在 tarball 中时,我遇到了一些麻烦,data_files
直到我在这里遇到另一篇将我指向该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
在源代码发行版上运行测试?如果是这样,他们扮演什么角色,他们处于什么情况?我不知道我是否应该费心去做这项工作,如果我这样做,该为谁工作。