官方指導(dǎo)中給出了幾種維護(hù)項(xiàng)目單源版本號(hào)的方法,摘取較好的幾種簡(jiǎn)述一下:
- 在獨(dú)立模塊中設(shè)置
__version__
變量屠尊,在setup.py中通過(guò)execfile讀取文件
execfile('...sample/version.py') # 現(xiàn)在可用__version__變量
在
__init__.py
中設(shè)置__version__
變量,并通過(guò)import模塊所在包導(dǎo)入至setup.py迟螺,引用該變量
但不要在__init__.py
中導(dǎo)入其他第三方包究珊,否則很可能會(huì)運(yùn)行失敗使用bumpversion / changes / zest.releaser等管理版本號(hào)只洒,并自動(dòng)追加commit / tag至vcs
- 使用setuptools_scm自動(dòng)從vcs(git)中讀取最后tag版本號(hào),自動(dòng)追加版本后設(shè)置到setup.py
# 在根目錄腳本中獲取版本號(hào)
version = setuptools_scm.get_version(local_scheme=lambda ver: '')
# 在子目錄腳本中獲取版本號(hào)
version = setuptools_scm.get_version(root='..', relative_to=__file__)
# 獲取不含Local version identifiers的純凈版本號(hào)
version = setuptools_scm.get_version(local_scheme=lambda ver: '')
setuptools_scm的版本輸出規(guī)范:
{next_version}.dev{distance}+{scm letter}{revision hash}.dYYYYMMDD
1.0.1b2.dev0+g2ae5364.d20170916
scm letter:g表示當(dāng)前項(xiàng)目vcs為git
revision hash:2ae5364為當(dāng)前分支的hash code
dYYYYMMDD:現(xiàn)在的日期
PEP440版本命名規(guī)范
PyPIに登録するパッケージバージョンをGitから取得する
- 獲取特定程序的版本號(hào)(這項(xiàng)出現(xiàn)在這里感覺(jué)哪里不對(duì)..)
import pkg_resources
assert pkg_resources.get_distribution('pip').version