5

我想分发一个 Python 包(我想使用 setuptools 并且我已经有一个可用的 setup.py 文件)和相关文档(使用 Sphinx 生成)。

我发现自己有点困惑,因为我必须在不同的部分指定作者姓名、维护者、版本、发布、日期、电子邮件等。

我想知道是否有某种方法可以只为包定义一次这种公共信息,然后在 setup.py 脚本和 .rst 文件等中使用它。

解决这个问题的可能方法是什么?

4

2 回答 2

5

如果您使用 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将构建文档,为这些共享值提供一个单一的事实点。做得好。

为我工作。希望能帮助到你!

于 2013-05-21T21:20:43.120 回答
0

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'),

于 2014-03-24T13:38:56.097 回答