我想分发一个 Python 包(我想使用 setuptools 并且我已经有一个可用的 setup.py 文件)和相关文档(使用 Sphinx 生成)。
我发现自己有点困惑,因为我必须在不同的部分指定作者姓名、维护者、版本、发布、日期、电子邮件等。
我想知道是否有某种方法可以只为包定义一次这种公共信息,然后在 setup.py 脚本和 .rst 文件等中使用它。
解决这个问题的可能方法是什么?
如果您使用 distutils 调用 sphinx,则您的情况已涵盖。答案在sphinx/setup_command.py的文档中。从那个例子中,你的 setup.py 应该有一个看起来有点像这样的部分:
# this is only necessary when not using setuptools/distribute
from sphinx.setup_command import BuildDoc
cmdclass = {'build_sphinx': BuildDoc}
name = 'My project'
version = '1.2'
release = '1.2.0'
setup(
name=name,
author='Bernard Montgomery',
version=release,
cmdclass=cmdclass,
# these are optional and override conf.py settings
command_options={
'build_sphinx': {
'project': ('setup.py', name),
'version': ('setup.py', version),
'release': ('setup.py', release)}},
)
在那之后,调用python setup.py build_sphinx
将构建文档,为这些共享值提供一个单一的事实点。做得好。
为我工作。希望能帮助到你!
Python Packaging User Guide的示例项目采用了不同的方法。它解析文件sample/__init__.py
:
https://github.com/pypa/sampleproject/blob/master/setup.py
setup(
name="sample",
version=find_version('sample', '__init__.py'),