首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安装Python包的依赖项的最早版本

安装Python包的依赖项的最早版本
EN

Stack Overflow用户
提问于 2020-01-12 15:49:31
回答 1查看 116关注 0票数 4

因此,当使用pip安装Python包时,它会安装该包的所有依赖项的最新版本。但是我的包定义了支持的依赖项的版本范围。出于测试目的,我想在CI中运行测试,不仅针对所有最新的依赖项,而且还针对所有最旧版本的依赖项(因此,声称支持最旧的版本)。

我知道我还必须测试受支持的依赖项版本的所有组合,但我只需测试所有最新和最旧的版本即可。

因此,问题是如何将这些依赖项与最旧的受支持版本一起安装。

EN

Stack Overflow用户

发布于 2020-01-13 14:03:17

我写了以下脚本:

代码语言:javascript
运行
复制
import pkg_resources

package = pkg_resources.working_set.by_key[package_name]

oldest_dependencies = []

for requirement in package.requires():
    dependency = requirement.project_name
    if requirement.extras:
        dependency += '[' + ','.join(requirement.extras) + ']'
    for comparator, version in requirement.specs:
        if comparator == '==':
            if len(requirement.specs) != 1:
                raise ValueError('Invalid dependency: {requirement}'.format(requirement=requirement))
            dependency += '==' + version
        elif comparator == '<=':
            if len(requirement.specs) != 2:
                raise ValueError('Invalid dependency: {requirement}'.format(requirement=requirement))
        elif comparator == '>=':
            dependency += '==' + version

    oldest_dependencies.append(dependency)

for dependency in oldest_dependencies:
    print(dependency)

它会打印出最早的依赖项。然后,我可以运行它并将其传递给pip以安装这些版本。

唯一的问题是,它不能与依赖关系的下限一起工作,比如>1.0,它需要检查PyPi,哪个版本确实是最旧的,但仍然比1.0更新。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59701935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档