[英]Single source of truth for Python project version in presence of pyproject.toml
pyproject.toml 規范提供了指定項目版本的能力,例如
[project]
name = "foo"
version = "0.0.1"
不過,把__version__ = "0.0.1"
放在foo/__init__.py
,方便用戶查詢,也是Python 常用的成語。
是否有從pyproject.toml
中提取version
並將其放入foo/__init__.py
的標准方法?
您可以在此處采用兩種方法。
pyproject.toml
中,從源碼中的package元數據中獲取。 所以,在你的foo/__init__.py
或任何地方:from importlib.metadata import version
__version__ = version(__package__)
importlib.metadata.version
自 Python 3.8 起可用。 對於較早的 Python 版本,您可以使用importlib_metadata
backport 執行類似操作。
pyproject.toml
中看起來像這樣:[project]
dynamic = ["version"]
[tool.setuptools.dynamic]
version = {attr = "foo.__version__"}
我的建議實際上是 ()...都不是! 根本不要在源代碼中保留__version__
屬性。 這是一個過時的習慣,我們現在可以不用了。 Version
已經是package 元數據中的必填字段,在包/模塊命名空間中保留與屬性相同的字符串是多余的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.