Roe*_*ant 9 python pip setup.py pyproject.toml
我们使用简单的日期时间版本对所有公司包进行版本控制。现在我们正在考虑转向pyproject.toml而不是setup.py. 是否也可以在那里进行灵活的版本控制?
version = datetime.datetime.now().strftime('%Y.%m.%d.%H%M')
# Actual setup
setup(
name="some-package",
version=version,
description='Some description',
packages=find_namespace_packages(where='src', include=['company.project.*']),
package_dir={'': 'src'},
python_requires='>=3.6',
install_requires=[
'numpy',
'numba'
],
)
Run Code Online (Sandbox Code Playgroud)
我需要什么语法来调整 pyproject.toml 中的版本控制?这个正在使用poetry,但没有必要。
[tool.poetry]
name = "some-package"
version = "0.1.0"
description = ""
readme = "README.md"
Run Code Online (Sandbox Code Playgroud)
诗歌似乎不支持这一点,例如参见问题#4299 。
但弗利特确实如此。Flit 允许我们将版本声明为“动态” pyproject.toml:
[project]
name = 'some_package'
dynamic = ['version']
description = 'Description of the package.'
[build-system]
requires = ['flit_core>=3.2,<4']
build-backend = 'flit_core.buildapi'
Run Code Online (Sandbox Code Playgroud)
然后版本由包的__version__属性确定。例如,__init__.py可以包含以下内容:
[project]
name = 'some_package'
dynamic = ['version']
description = 'Description of the package.'
[build-system]
requires = ['flit_core>=3.2,<4']
build-backend = 'flit_core.buildapi'
Run Code Online (Sandbox Code Playgroud)
但请注意,在您的具体情况下,当使用 构建软件包时flit build,Flit 会观察到版本号不符合PEP 440并相应地对其进行规范化,即从日期和月份数字中删除前导零。