我在Github上创建了一个Python模块,它使用Nose进行单元测试,使用Sphinx生成文档。我有两个问题:
我应该在我的模块的setup.py(install_requires)依赖项中包含Sphinx和/或Nose,因为它们不是基本模块功能所必需的,只有当你想构建文档/运行时才测试自己?
我是否应该在我的模块的Github上的requirements.txt中包含Sphinx和/或Nose,原因相同但是从Github下载我的项目的用户可能更有可能构建docs / run测试?
这是我的第一个Python模块,所以我们会感激一些最佳实践/标准建议。
答案 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 yourmodule
或pip install https://your/tarball
,开发人员可以分叉,克隆和pip install -r reqs.development
。