我更喜欢日历版本控制方案(参见calver.org)而不是语义方法。但是当我在Python包中使用日历版本时,PyPI会删除月中的零填充。例如,在setup.py
中,如果版本号被声明为version='19.03'
,则PyPI将包托管为19.3(无零填充)。
有没有办法强制PyPI确认零填充月份或者是不支持Python包的YYYY.0M
方案?
是的,这是可能的。问题不是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
的出现次数,并将其重新打包到名为calver-test-2019.03.29.tar.gz
的文件中,并将其上传到PyPI,它将保留零填充。
示例:https://pypi.org/project/calver-test/2019.03.29/
显然,如果这是你的预期行为,这个过程并不理想,所以也许在setuptools issue tracker上打开一个问题是有意义的。