作为python包维护者,如何确定最低工作需求



虽然可以简单地使用pip freeze来获取当前环境,但不适合要求像我使用的那样前沿的环境。此外,一些开发人员工具仅在最新版本的包中可用(例如类型注释),但用户并不需要。我的目标用户可能希望在缓慢升级的机器上使用我的包,而我希望我的需求尽可能低。例如,我不能要求比Python 3.6更好的版本(即使是这样,我认为一些用户可能无法使用该包)。同样,我希望避免使用最新的Numpy或Matplotlib版本。

是否有一种(半)自动的方法来确定每个依赖的最旧的兼容版本?

或者,我可以手动尝试用旧包构建conda环境,但我必须随机尝试。不幸的是,我继承了一个中等规模的代码库(~10KLoC),还没有自动化测试(我计划做一些,但这需要一些时间,遗憾的是这不是我的优先事项)。需求也没有正确定义,所以我不知道两年前它是用什么运行的。

因为语义版本控制并不总是得到尊重(因为从开发人员的角度来看,很难确定每个可能的用户的主要或次要更改是什么),并且因为只有人类才能解析发行说明以了解发生了什么变化,所以没有简单的解决方案。

我的技术方法是创建一个虚拟环境,其中包含Python和库版本的已知工作组合。从那里,一个版本一个版本地降级,一次降级一个库,验证它仍然可以正常工作(如果是手动的和/或长时间检查可能会很困难)。

我的社交解决方案是将技术方法的时间限制在几个小时以内。那就满足于你所达成的。在README中指出,lib需求可能被夸大了,欢迎提供帮助。

如果没有您确信的快速自动化测试,就没有办法自动探索n空间(每个库是一个维度)来找到一些最小值。

最新更新