首页 > 编程语言 >PEP 508:为不同版本Python指定不同依赖

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

时间:2024-08-27 10:25:51浏览次数:9  
标签:508 Python PEP 版本 txt numpy

问题背景

有些常用的第三方包,在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

标签:508,Python,PEP,版本,txt,numpy
From: https://www.cnblogs.com/dechinphy/p/18382054/pep508

相关文章

  • 10 个令人惊叹的 Python 自动化脚本!
                                                                            /01/剪贴板管理器你是否曾发现自己忙于处理多个文本片段,而忘记了自己复制了什么?有没有想过有一个工具可以记录你一天中......
  • 3.Python操控Excel之写
    1.openpyxl读取excel的格式流程2.openpyxl修改sheet标题并生成新excel保存3..create_sheet方法添加sheet,.remove方法删除sheet4.excel数据填充的四种方式5.1.更新excel内一列数据中的部分数据_代码部分5.2.更新excel内一列数据中的部分数据_执行结果......
  • python如何通过Json路径返回Json响应对应的值例子解析
    在Python中,处理JSON数据通常使用标准库中的json模块来解析和操作JSON格式的数据。如果你想要通过JSON路径来获取JSON响应中的值,你可以使用第三方库,如jsonpath-ng,它允许你使用类似XPath的语法来查询JSON对象。首先,你需要安装jsonpath-ng库,可以使用pip来安装:pipinstalljs......
  • python aiohttp创建很多线程的问题及解决例子解析
    在使用aiohttp进行异步HTTP请求时,创建大量线程可能会导致性能问题。根据搜索结果,这个问题通常与DNS查询有关,因为默认情况下,每次发送请求时aiohttp.ClientSession都会进行DNS查询,这是一个阻塞操作,会为每次查询创建一个新线程。为了解决这个问题,可以通过指定一个AsyncR......
  • 零基础学习人工智能—Python—Pytorch学习(九)
    前言本文主要介绍卷积神经网络的使用的下半部分。另外,上篇文章增加了一点代码注释,主要是解释(w-f+2p)/s+1这个公式的使用。所以,要是这篇文章的代码看不太懂,可以翻一下上篇文章。代码实现之前,我们已经学习了概念,在结合我们以前学习的知识,我们可以直接阅读下面代码了。代码里使......
  • 【python计算机视觉编程——1.基本的图像操作和处理】
    python计算机视觉编程——1.基本的图像操作和处理1.基本的图像操作和处理1.1PIL:Python图像处理类库1.1.1转换图像格式1.1.2创建缩略图1.1.3复制和粘贴图像区域1.1.4调整尺寸和旋转1.2Matplotlib1.2.1绘制图像、点和线1.2.2图像轮廓和直方图1.3Numpy1.3.1图像......
  • 战争密码 Python实现二战德军恩格玛机(Enigma)
    战争密码Python实现二战德军恩格玛机(Enigma)恩格玛机原理介绍转轮类的实现恩格玛机类的实现加解密类的实现加密解密完整代码加密代码解密代码注意恩格玛机原理介绍恩格玛机,在密码学史中通常被称为恩尼格玛密码机(Enigma),是一种用于加密与解密文件的密码机。它最早......
  • python基础(10异常处理)
    python系列文章目录python基础(01变量&数据类型&运算符)python基础(02序列共性)python基础(03列表和元组)python基础(04字符串&字典)python基础(05集合set)python基础(06控制语句)python基础(07函数)python基础(08类和对象)python基础(09闭包&装饰器)文章目录python系列文章目......
  • 06、Python爬虫——前端JS相关知识(一)
    前端JS相关三元运算v1=条件?值A:值B;res=1===1?99:88#res=99如果条件成立则返回冒号前的那个值,如果条件不成立则返回冒号后面那个值 特殊的逻辑运算v1=1===1||2===2这种运算是比较运算+或运算,在或(||)的前面和后面都是比较运算,前后的返回值都是ture......
  • python实例演示贝叶斯定理在机器学习中的应用
    贝叶斯定理是一种概率论中的基本公式,用于计算在已知条件下事件发生的概率。它的通俗解释可以理解为:当你获得新信息时,如何更新对某个事件发生概率的判断。贝叶斯定理公式贝叶斯定理的数学表达式是:P(A∣B)=P(B∣A)⋅P(A)P(B)P(A|B)=\frac{P(B|A)\cdotP(A)}{P(B)}P(A∣B)=P......