[疑难杂症2023-001]代码没有任何改变,仅用CI打了一个新镜像,运行出错的可能原因分析

news2024/11/25 6:57:08

本文由Markdown语法编辑器编辑完成。

1. 前言

近日在项目中,遇到一个比较奇怪的问题。就是代码基本没有做任何修改,只是在配置文件中增加了几行配置,结果用CI的服务器,打了一个新的tag, 然后再运行时,就会出现报错。

ImportError: cannot import name 'Celery' from 'celery'

而报错的地方,可以肯定与做的更改没有任何关系。
这时,就陷入了困境。到底是哪里发生了问题呢?

2. 解决思路:

2.1 重新打包

遇到这种问题, 一般首先想到的,是不是自动打包时发生了异常,导致打出来的安装包出问题了.
因此,一般都会再Retry一下.但是经过一段时间的等待,重新打出来的包,启动时还是会报相同的问题.

2.2 查看依赖库

因为代码几乎没有变,那经过CI时,最可能变化的,可能就是依赖的第三方包的版本了.
从网上查到了类似的问题:
https://stackoverflow.com/questions/74025035/importerror-cannot-import-name-celery-from-celery
而且报错几乎完全一致.
下面第一个回答就是关于这个问题的.
它是说,由于Celery依赖的包importlib-metadata的版本发生了变化.
如果在打镜像时,没有特别指明这个第三方包的版本时,CI会自动安装最新的版本.
因此,CI自动下载了 importlib-metadata==5.0.0的版本.
而由于我们使用的Celery是4.3.0的版本,它需要依赖importlib-metadata的版本是4.12.0, 才不会报错.

知道了原因后,再去CI的服务器上看一下打包记录.
在这里插入图片描述
我查看CI服务器上的打包记录,显示的是下载的importlib_metadata==6.0.0的版本.
因此导致了Celery出错.

修复方案:

知道了问题后,再修改就很简单了.
在requirements.txt中,指明这个包的版本为4.12.0即可.再重新打镜像,便解决了这个问题.

......
importlib_metadata==4.12.0

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

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

相关文章

一文带你看懂验证码攻防技术那些事儿

本文目录 验证码为什么越变越复杂? 验证码有哪些破解方式? 验证码如何进行顶层产品能力设计? “天生反骨”的验证码总是让人类头疼不已。 比如最基础的英文数字组合验证码,就已经会让人陷入自我怀疑: “I还是1&am…

【机器学习 - 3】:数据归一化(最值归一化、均值方差归一化)

文章目录数据归一化的使用最值归一化均值方差归一化(常用)在sklearn中调用归一化(鸢尾花数据归一化)数据归一化的使用 为什么要使用数据归一化? 举个例子,例如我们要使用KNN算法来预测肿瘤为良性肿瘤或恶性…

Python算法:三种高级排序的方法

前言 声明:本文所有动图来源为菜鸟教程 🍀作者简介:被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 🍁个人主页:红中 🍂不就是蓝桥杯嘛,干他!&#…

Windows系统上的小知识点集合(收藏更新)

1.开机自动运行 如果你写了一段代码或者脚本,甚至某个程序。希望在windows开机之后自动执行,可以按照以下方法操作 对于Windows系统,开机之后当所有的软件初始化完毕之后,会自动运行 C:\Users\(你的用户名&#xff…

Elasticsearch入门—— Elasticsearch7.8.0版本索引操作

目录一、创建索引1.1、创建索引概述1.2、创建索引示例1.3、重复创建索引示例二、查看索引2.1、查看所有索引2.2、查看单个索引三、删除索引3.1、删除索引一、创建索引 1.1、创建索引概述 对比关系型数据库,创建索引就等同于创建数据库 1.2、创建索引示例 在 Pos…

matlab/simulink仿真数据的导出暨to workspace模块的使用

matlab/simulink仿真数据的导出 在用simulink仿真的时候,希望把数据导出,用其他软件进一步分析和处理,该如何做呢? 使用下面这个叫做to workspace的模块就可以实现 1 参数设置 把该模块拖出来。双击打开进行设置,会…

贪心策略(一)(选择排序、分割平衡串、买卖股票、跳跃游戏)

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心选择是指所求问题的整体最优解可以通过一系列…

4、Ubuntu20常用操作_文本编辑文件系统目录和文件操作用户管理和文件权限

Ubuntu系统操作 注销(退出Linux系统) 在每次使用完后,一定要进行注销(或者说退出),以防他人通过你的帐号进入系统。 在Linux提示符下,运行exit命令,即可退出本次登录 或直接按组…

代码随想录刷题训练营第七天|● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结

四数相加 看完题后的思路 首先想到了暴力解法,四重for循环,时间复杂度为0(n^4).接着往下想,四数相加不正好是(两数相加)(两数相加)吗,可以依次求出两数相加的结果存入hash表中 和-[下标1,下标2],然后再进行两数相加. 思路 上面的思路中,有两点疑问: (12)(34)(13)(24)吗? 1…

渗透测试基础入门【01】——测试流程(IPC$)

渗透测试基础入门【01】——测试流程(IPC$) 注意,攻击对方需要对方授权,本文章目的只为教学,不要拿去干违法的事 1 渗透测试流程 授权(获取目标用户授权,否则是违法行为)信息收集 …

【4 - 降维算法PCA和SVD - 原理部分】菜菜sklearn机器学习

课程地址:《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期:sklearn入门 & 决策树在sklearn中的实现第二期:随机森林在sklearn中的实现第三期:sklearn中的数据预处理和特征工程第四期:sklearn中的降维算法…

nacos注册源码分析

Nacos注册服务 cosumer启动的时候,从nacos server上读取指定服务名称的实例列表,缓存到本地内存中。 开启一个定时任务,每隔10s去nacos server上拉取服务列表 nacos的push机制: 通过心跳检测发现服务提供者出现心态超时的时候…

SpringCloud学习笔记 - 流控规则 - Sentinel

1. Sentinel流控规则简介 这里的流控指的是“流量控制”,进一步解释说明: 资源名:唯一名称,默认请求路径。 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,默认default(不…

爬虫解析模块(bs4,selenium)

bs4文档 from bs4 import BeautifulSoupBeautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。 解析器 解析器使用方法优势劣势Python标准库BeautifulS…

Dubbo——入门介绍

目录1.概述1.1.什么是 Dubbo ?1.2.Dubbo 架构2.Dubbo 快速入门2.1.Zookeeper 安装2.2.创建项目2.3.代码实现2.3.1.dubbo-service 模块2.3.2.dubbo-web 模块2.4.本地启动2.5.使用 Dubbo 实现 PRC2.5.1.修改 dubbo-service 模块2.5.2.修改 dubbo-web 模块2.5.3.启动 d…

可免费编辑 PDF 内容的 7 大 PDF 编辑工具

有时您可能希望编辑 PDF 文档中的敏感信息,例如财务帐号和 ID 号,以便在不泄露隐私的情况下共享 PDF。编辑 PDF 是从 PDF 中删除私有内容。使用PDF 编辑工具可以轻松完成编辑。市场上有这么多工具,您需要选择最好的一种。 7 大 PDF 编辑工具 …

data analysis and predict

data anlysis and predict 谢邀,本人正在崩溃和兴奋间反复横跳(崩溃居多),anyway, 我心态超好的!besides, 仅供个人学习查阅,不具任何参考价值!!! (小边不想努…

路由信息协议RIP

文章目录路由信息协议RIP一、Routing Information Protocol的定义二、RIP的基本工作过程三、“坏消息传播得慢”的问题四、总结路由信息协议RIP 一、Routing Information Protocol的定义 RIP是分布式的基于距离向量的路由选择协议 协议RIP的特点是: 仅和相邻路由…

Java数据结构(泛型)

1、集合框架 Java 集合框架Java Collection Framework ,又被称为容器container ,是定义在 java.util 包下的一组接口interfaces 和其实现类classes 。 其主要表现为将多个元素element 置于一个单元中,用于对这些元素进行快速、便捷的存储sto…

【XML了解】xml与hxml 标记语言学习

XML与HXML的区别 XML 被设计用来传输和存储数据,结构化、存储以及传输信息(如:数据包) XML 被设计用来传输和存储数据,其焦点是数据的内容 XML 标签没有被预定义, 需要自行定义标签 HTML 被设计用来表现和展示数据&…