Python 让sphinx使用setup.py中的版本
如果我执行Python 让sphinx使用setup.py中的版本,python,package,python-sphinx,Python,Package,Python Sphinx,如果我执行sphinx quickstart,我会被问及项目的版本 我想避免我的项目版本有两个位置 如何在python打包世界中做到这一点?最简单(可能也是最干净)的方法是定义顶级包的\uuuu init\uuuuuuuuuuuuuuuuupy,然后导入该包并在setup.py和Sphinx项目的conf.py中读取版本 假设您的项目名为myproject 将当前版本移出setup.py,改为将其作为myproject/\uuuu init\uuuuu.py中的变量: myproject/\uu
sphinx quickstart
,我会被问及项目的版本
我想避免我的项目版本有两个位置
如何在python打包世界中做到这一点?最简单(可能也是最干净)的方法是定义顶级包的\uuuu init\uuuuuuuuuuuuuuuuupy
,然后导入该包并在setup.py
和Sphinx项目的conf.py
中读取版本
假设您的项目名为myproject
将当前版本移出setup.py
,改为将其作为myproject/\uuuu init\uuuuu.py
中的变量:
myproject/\uuuu init\uuuuu.py
:
# import foo
# ...
__version__ = '1.5'
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
在项目的setup.py
中导入myproject
,并将硬编码版本替换为myproject.\uuuuuuuuuu版本
:
setup.py
:
# import foo
# ...
__version__ = '1.5'
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
在Sphinx项目的conf.py
中,执行相同的操作。因此,按照以下几行编辑生成的conf.py
:
docs/conf.py
:
# import foo
# ...
__version__ = '1.5'
from setuptools import setup
from myproject import __version__
project = "myproject"
setup(
name=project,
version=__version__,
# ...
)
from myproject import __version__
# ...
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
release = version
举一个库的例子,它的功能与此非常相似,请查看模块(| |)
这将处理使用项目版本时自动生成的文本(如文档首页的链接)。如果要在特定的自定义位置使用您的版本,可以使用指令动态插入conf.py
中定义的配置值。您可以查看模块:
“一个小型命令行工具,通过以正确的增量更新源代码中的所有版本字符串来简化软件发布”
您可以使用配置文件
.bumpversion.cfg
来执行复杂的多文件操作。更干净的选择可能是根据setup.py
命令实际构建sphinx,如中所述:
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),
'source_dir': ('setup.py', 'doc')}},
)
然后使用
$ python setup.py build_sphinx
好处:
- 使
成为版本号的单一来源setup.py
- 避免不必要地从项目文件夹中生成包
,如果不先安装依赖项,用户将无法安装软件包:我们还遇到了第三方导入的问题,并通过引入一个只包含元信息的单独软件包解决了这个问题。看看这个答案:您必须手动安装Sphinx,setup.py才能工作。因此,您不能再使用pip3-e.
。