使用Python包的日历版本控制

问题描述 投票:2回答:1

我更喜欢日历版本控制方案(参见calver.org)而不是语义方法。但是当我在Python包中使用日历版本时,PyPI会删除月中的零填充。例如,在setup.py中,如果版本号被声明为version='19.03',则PyPI将包托管为19.3(无零填充)。

有没有办法强制PyPI确认零填充月份或者是不支持Python包的YYYY.0M方案?

python python-3.x pip pypi
1个回答
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.29PKG-INFO的出现次数,并将其重新打包到名为calver-test-2019.03.29.tar.gz的文件中,并将其上传到PyPI,它将保留零填充。

示例:https://pypi.org/project/calver-test/2019.03.29/

显然,如果这是你的预期行为,这个过程并不理想,所以也许在setuptools issue tracker上打开一个问题是有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.