我应该在模块的requirements.txt中包含Sphinx和/或Nose吗?

时间:2013-08-25 06:20:50

标签: python standards pip setup.py requirements.txt

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

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

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

这是我的第一个Python模块,所以我们会感激一些最佳实践/标准建议。

2 个答案:

答案 0 :(得分:7)

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

requirements.txt文件也不应该包含开发所需的软件包,尽管那里有一些摆动空间。

例如,在pandas处,我们使用Travis-CI构建的需求文件。您可以查看here

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

答案 1 :(得分: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