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

news/2024/10/12 8:21:51

问题背景

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/53380.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

经验分享|如何发现并利用信息泄露漏洞?

信息泄露漏洞是发现和报告的重要目标。虽然它们可能不会带来很丰厚的回报,但发现它们表明Web应用程序的安全性较差,这可能有助于发现更严重的漏洞。 一、常见的信息泄露漏洞类型 1.1服务器标识版本 服务器标识版本能够揭示服务器上运行的特定软件及其版本,这可以被用来寻找已…

简单萌萌哒 Top Tree(上)

前情提要。 Top Cluster 分解与 Top Tree 情景导入 我们总是想要以一种合适的方式对树进行划分,但是对于菊花图而言,基于点的划分总是不合适的,这启发我们基于边进行划分。事实上可以证明,基于边的划分总是可行的。 Top Cluster 分解就是一种基于边的划分方式,下面我们来介…

手把手教你—搭建Vue3企业级项目规范+基础封装配置

前言 如何搭建一个简易脚手架。核心需求是输入项目命令,clone准备好的项目模板,拉到本地后,装一下依赖,就可以直接开发了。不用每次都花大量时间,去搭建项目规范和做必要的封装配置。 经过简单寻找后,发现没有符合自己预期的。于是大雄从0到1搭建一个具备完善规范的Vue3开…

WPF 模板

一、数据模板继承了ItemConrol的控件对象(如ListView、ListBox、DataGrid、TabControl等等),都可以使用数据模板DataTemplate。 数据模板的作用在于决定每个Item中的数据的展示形式。 普通控件通过Template属性来定义模板,而子项容器控件则通过ItemTemplate属性来定义子项模…

算法与数据结构——队列

队列 队列(queue)是一种遵循先入先出规则的线性数据结构。队列模拟了排队现象,即新来的人不断加入队列尾部,而队列头部的人逐个离开。 如图所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队列尾部的操作称为“入队”,删除队首元素的操作称为“出队”。…

AD采集卡:FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡 信号采集卡

FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡 一、板卡概述FMC-1AD2DA是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC子卡。板卡采用标准FMC子卡架构,可方便的与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集、雷达系统测试等场合。    二、 功能介绍 2.1 …

BAdam A Memory Efficient Full Parameter Optimization Method for Large Language Models

目录概BAdam代码Luo Q., Yu H. and Li X. BAdam: A memory efficient full parameter optimization method for large language models. arXiv preprint, 2024.概 本文介绍了一种 Block corrdinate descent (BCD) 的训练方式. BAdam当模型本身很大的时候, 训练它会成为一个很大…

Origin2024图表中如何直接移除异常点?

平时我们在使用Origin绘图后,可能会发现有一两个「异常点」,这个时候,我们可能会返回工作表,将异常的数据去除,但可能不知道是哪个数据,因为图和数据有时候不太好对应起来; 本期给大家分享做好图之后直接选择移除异常点功能,并且数据表中的数据也会相应的去除,是一个很…