9

我在 Github 上创建了一个 Python 模块,它使用 Nose 进行单元测试,使用 Sphinx 生成文档。我有两个问题:

  • 我是否应该在 setup.py (install_requires) 中的模块依赖项中包含 Sphinx 和/或 Nose,因为它们不是基本模块功能所必需的,仅当您想自己构建文档/运行测试时?

  • 出于同样的原因,我是否应该在 Github 上的模块 requirements.txt 中包含 Sphinx 和/或 Nose,但是从 Github 下载我的项目的用户可能更有可能构建文档/运行测试?

这是我的第一个 Python 模块,因此将不胜感激一些最佳实践/标准建议。

4

2 回答 2

8

如果包的基本功能不需要nose和/或sphinx不需要,则不要将它们包含在setup.py. 强迫用户安装他们可能永远不会使用的软件包是没有意义的。如果他们最终想帮助你开发你的包,他们可以自己安装必要的包。

requirements.txt文件也不应该包含开发所需的包,尽管那里有一些回旋余地。

例如,pandas我们在 Travis-CI 构建中使用需求文件。你可以在这里查看它们。

我们正在考虑的一件事是在 Travis-CI 上构建我们的文档,因为有时一个失败的文档构建会捕获测试套件没有捕获的错误。在这种情况下,我们放入sphinx用于构建文档的 Python 版本的需求文件。

于 2013-08-25T06:56:40.783 回答
1

不要在你的 setup.py 中包含那些不错的东西。如果您愿意,可以为开发人员编写需求文件;用户将不需要一个。例如,调用一个文件reqs.development

-e . # include the package defined by setup.py in editable (development) mode
nose
sphinx

用户可以pip install yourmodulepip install https://your/tarball,开发人员可以分叉、克隆和pip install -r reqs.development.

于 2013-09-30T09:01:33.190 回答