加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – pip冻结输出中的未来安全版本号

发布时间:2020-12-20 13:41:14 所属栏目:Python 来源:网络整理
导读:如果我输入pip freeze requirements.txt,生成的文件看起来类似于: argparse==1.2.1 h5py==2.2.0 wsgiref==0.1.2 一些图书馆正在不断发展.这件事发生在我身上,关于h5py,现在(在撰写本文时)版本2.2.1中提供.因此,使用pip install -r requirements.txt会抛出错
如果我输入pip freeze> requirements.txt,生成的文件看起来类似于:

argparse==1.2.1  
h5py==2.2.0  
wsgiref==0.1.2

一些图书馆正在不断发展.这件事发生在我身上,关于h5py,现在(在撰写本文时)版本2.2.1中提供.因此,使用pip install -r requirements.txt会抛出错误,说找不到h5py的2.2.0版本:

No distributions matching the version for h5py==2.2.0 (from -r requirements.txt (line 2))

通过pip冻结维持要求是否被视为良好做法?显然,我不能依赖将来仍然可用的特定版本号.我希望将来部署我的应用程序,即使它们已经使用了几年,但没有版本号的兼容性问题.有没有办法让pip冻结的输出在未来安全?

我想通过使用大于号符号> =而不是等于符号==来操纵pip冻结的输出文件,所以输出将如下所示:

argparse>=1.2.1  
h5py>=2.2.0  
wsgiref>=0.1.2

但我可以想象,如果任何库在未来版本中破坏向后兼容性,这将破坏我的应用程序.

解决方法

要回答第一个问题,是的,使用pip冻结来管理需求是很常见的.如果项目打包,您还可以直接在setup.py文件中设置依赖项.

您可以将需求设置为大于或等于版本x,但正如您推测的那样,如果依赖项对其api进行了更改以破坏您所需的功能,则可以转向并咬你.您还可以确保已安装的依赖项小于某个版本.即如果您使用的是1.0版本的软件包并希望进行小的更新,但主要版本会让您感到害怕(无论是否已发布),您可以要求示例> = 1.0.0,< 2.0.0 More info on requirements files

最后,pip freeze只是一个工具,可以向您展示您当前安装的内容,它不知道或关心它是否适合您.基于这些数据复制环境的用途也无关紧要;版本冲突,更新破坏向后兼容性,错误和依赖中的其他此类问题将(至少一次)导致您悲伤.密切关注项目主要依赖项的状态并使用新版本进行自动化测试将为您节省大量时间和头痛(或者至少令人头痛).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读