PEP 508:为不同版本Python指定不同依赖

问题背景

有些常用的第三方包,在Python中支持的版本是不一致的。例如常用的numpy,在Python3.7中仅支持到1.21版本,其他Python版本可以支持到1.22版本以上,甚至现在的2.0版本以上。有一个问题是,在有些Cython的使用场景中,numpy==1.22的版本有可能出现报错ImportError: numpy.core.multiarray failed to import。那么如果直接在requirements.txt文件中指定numpy>1.22的话,在Python3.7版本下安装又会出问题。那么如何配置requirements.txt文件,使得安装的时候可以自动根据本地Python的版本去选择对应的numpy版本呢?

解决方案

关于这个问题,PEP 508中给出了解决方案。我们可以在requirements.txt指定的软件版本后面加上对应的python_version即可,例如:

numpy<=1.21.6;python_version<="3.7"
numpy>=1.23,<1.28;python_version>"3.7"

这样就可以在Python3.7下安装到最高1.21.6的版本,而Python3.8、Python3.9、Python3.10这些环境可以安装到1.26的版本。之所以选定小于1.28的版本而不是最高2.0的版本,因为scipy要求到1.28以下的版本,所以尽可能不跟scipy起冲突。

总结概要

如果使用Python第三方包的某一个版本有问题,而不同版本Python所对应的软件最新版本又不一致,这种情况下如何在requirements.txt文件中指定软件最高版本是非常重要的。这里根据PEP 508的规范,做了一个Numpy版本要求numpy<=1.21.6 || 1.28>numpy>=1.23的示例。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/pep508.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值