the*_*orn 5 python pyproject.toml
使用一个简单的setup.py文件:
from setuptools import setup
setup(
name='foo',
version='1.2.3',
)
Run Code Online (Sandbox Code Playgroud)
我可以
$> python setup.py --version
1.2.3
Run Code Online (Sandbox Code Playgroud)
无需安装软件包。
等效文件是否有类似的功能pyproject.toml:
[project]
name = "foo"
version = "1.2.3"
Run Code Online (Sandbox Code Playgroud)
对于 Python 3.11+,类似这样的事情应该可以工作:
python3.11 -c "import tomllib; print(tomllib.load(open('pyproject.toml', 'rb'))['project']['version'])"
Run Code Online (Sandbox Code Playgroud)
在某些情况下,版本在 中声明为动态pyproject.toml,因此无法直接从此文件中解析它,解决方案(唯一的?)是实际构建项目,或者至少构建其元数据。
为此,我们可以使用项目build.util.project_wheel_metadata()中的函数,例如使用如下的小脚本:build
#!/usr/bin/env python
import argparse
import pathlib
import build.util
def _main():
args_parser = argparse.ArgumentParser()
args_parser.add_argument('path')
args = args_parser.parse_args()
path_name = getattr(args, 'path')
path = pathlib.Path(path_name)
#
metadata = build.util.project_wheel_metadata(path)
version = metadata.get('Version')
print(version)
if __name__ == '__main__':
_main()
Run Code Online (Sandbox Code Playgroud)
或者作为一句单行:
python -c "import build.util; print(build.util.project_wheel_metadata('.').get('Version'))"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
799 次 |
| 最近记录: |