Python包:如何避免重新定义作者版本等?

时间:2013-05-09 15:30:19

标签: python packaging

我想发布一个Python包(我想使用setuptools 我已经有一个工作的setup.py文件),以及相关的文档 (使用Sphinx制作)。

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

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

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

2 个答案:

答案 0 :(得分: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将构建文档,对这些共享值具有单一的真实点。做得好。

适合我。希望它有所帮助!

答案 1 :(得分:0)

Python包装用户指南的示例项目采用了不同的方法。它解析文件sample/__init__.py

https://github.com/pypa/sampleproject/blob/master/setup.py

setup( name="sample", version=find_version('sample', '__init__.py'),