与语义方法相比,我更喜欢日历版本控制方案(请参见calver.org)。但是,当我在Python软件包中使用日历版本控制时,PyPI会删除当月的零填充。例如,在setup.py
中,如果版本号声明为version='19.03'
,则PyPI会将软件包托管为19.3(无零填充)。
是否有一种方法可以强制PyPI确认零填充月份,或者Python软件包不支持YYYY.0M
方案?
答案 0 :(得分:3)
是的,有可能。问题不在于PyPI,而是setuptools
在构建发行版时规范版本号的方式。
使用简单的setup.py
定义一个最小的包:
from setuptools import setup
setup(
name='calver-test',
version='2019.03.29',
packages=[],
)
如果运行python setup.py sdist
,将生成文件calver-test-2019.3.29.tar.gz
,其结构如下:
calver-test-2019.3.29
├── PKG-INFO
├── calver_test.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ └── top_level.txt
├── setup.cfg
└── setup.py
如果您手动解压缩tar.gz
文件,请在2019.3.29
文件中将2019.03.29
修改为PKG-INFO
,然后将其重新打包到名为{{ 1}},并将其上传到PyPI,它将保留零填充。
此处的示例:https://pypi.org/project/calver-test/2019.03.29/
如果这是您的预期行为,显然,此过程并不理想,因此在setuptools issue tracker上发布问题可能很有意义。