【问题标题】:Should I include Sphinx and/or Nose in my module's requirements.txt?我应该在模块的 requirements.txt 中包含 Sphinx 和/或 Nose 吗?
【发布时间】:2013-08-27 21:25:52
【问题描述】:
我在 Github 上创建了一个 Python 模块,该模块使用 Nose 进行单元测试,使用 Sphinx 生成文档。我有两个问题:
这是我的第一个 Python 模块,希望能提供一些最佳实践/标准建议。
【问题讨论】:
标签:
python
standards
pip
setup.py
requirements.txt
【解决方案1】:
不要在 setup.py 中包含那些不错的东西。如果您愿意,可以为开发人员编写需求文件;用户将不需要一个。比如调用一个文件reqs.development:
-e . # include the package defined by setup.py in editable (development) mode
nose
sphinx
用户可以pip install yourmodule或pip install https://your/tarball,开发者可以fork、clone和pip install -r reqs.development。
【解决方案2】:
如果您的软件包的基本功能不需要nose 和/或sphinx,则不要将它们包含在setup.py 中。强迫用户安装他们可能永远不会使用的软件包是没有意义的。如果他们最终想帮助你开发你的包,他们可以自己安装必要的包。
requirements.txt 文件也不应该包含开发所需的包,尽管那里有一些回旋余地。
例如,在pandas,我们为我们的 Travis-CI 构建使用需求文件。您可以查看here。
我们正在考虑的一件事是在 Travis-CI 上构建我们的文档,因为有时一个失败的文档构建会捕获测试套件没有捕获的错误。在这种情况下,我们会将sphinx 放入我们用于构建文档的 Python 版本的需求文件中。