【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste

2023-12-16

前情介绍

网上关于这种问题的解决方案一大堆,但是绝大多数都是不适用,或者说解决不了问题,我根据别人所遇到的和我自己遇到的,对这个问题整理了一下,希望能解决这个问题。

问题分析

一、缺少这个module或者func或者package

缺少python的各种package的话,就自己pip一下
根据路径去找,发现是否忘记导入了

二、命名问题

这个问题也是很难容易解决,找一下路径,对应一下两个name,改一下就行。
还有可能出现这种情况的是你使用的是别的官方的代码,版本升级,导致这个函数不用了,改成了另一个函数了,这个时候就要百度一下(一般行不通),或者去github搜一搜这个问题,比如我用mmdetection,那我就去这个官方仓库下搜一搜有没有别人也出现这个问题,是不是版本的问题。比如我使用pytorch,那就搜一下pytorch的文档,看有没有这个方法的修改说明。
三、路径问题(重点)
路径问题一般可能出现这两种:一是路径有问题,路径不完整或者错误导致的;二是路径没问题,是路径之间的访问顺序问题导致的。

路径有问题的:
前面加上一个from xxx(你的包名) import XXX(你要导入的文件),然后最好根据这个路径去找找你所要导入的文件是否存在,一般都能解决这个问题。
路径没问题的:
一个现象:路径没问题的,一般就是你的各个文件夹之间的导包出现了死锁现象,如果是出现下面这个问题:

解决方法:只在两个文件之间的死锁,建议是把要导入的函数或者模块写进第三个文件中,两个文件的死锁现象是解决不了的,捋清一下谁依赖谁,谁又依赖谁,然后分开写,如果不明白的话,看下面我自己遇到的问题,和我对其错误信息的分析,然后自己把他们分开来写。

另一个现象:如果是出现在多个文件夹之间的引用,然后你在错误信息指定的文件夹中也找到了这个module,但是就是import不到的现象:
下面是我在mmdetection上跑实验的时候报错的截图:

分析:我在mmdet.core文件夹下的一个文件中是有eval_recalls的函数的,也就是路径没问题,命名也没问题,那就是import的循序出现了问题,造成了import追尾现象(死锁),具体分析如下。
如上图所示,我在mmdet.core中import eval_recalls,但是导不进去,于是我看前面的错误信息中,也访问了mmdet.core, init.py文件,然后直接跳到文件夹evalution的init下了(eval_recalls函数在core/evalution下的recall.py文件下)


init文件夹的作用是将该文件下所有的包引入,所以访问完init,就会挨个将各个文件夹的文件导入内存中,
看上图,在evaluation文件夹先访问了_init_.py,也就是将文件下所有文件导入内存,错误信息中,evaluation/init.py中又去访问了eval_hooks.py文件

我们看一下evaluation下的_init_.py文件:

所以,在程序执行到第三行的时候,跳到了eval_hooks里面了,并没有将recall文件中的module导入到内存。
然后运行到coco.py的时候,这时执行:from mmdet.core import eval_recalls的时候

又去core的文件中导入,这时又要init吧。init后又要evaluation的init吧,然后到了evaluation/_init_.py的时候,开始导包了吧,然后到第三行是不是又要导eval_hooks的包了????这时候不就出现了死锁现象???死循环了,所以程序在这一步就import不到name ‘eval_recalls’ 这个module了。

解决方法:

全路径,在导入eval_recalls的时候,from的时候,把路径写全,具体导eval_revalls的文件,则这样就无须经过多层的import,导致出现死循环的问题。改写成from mmdet.core.evaluation.recall import eval_recalls
找到死循环的问题所在,换import的顺序,比如下图:更换两行的import顺序,这个问题不能保证没有接下去的问题,因为换了后,可能又会导致其他死循环存在,不过,实在没办法也得试试呀

ps:大家可能每次遇到这个问题,都会跟我一样,都会先网上一搜,然后发现没有一个可以解决的方案,然后又懒得看大篇的错误信息,然后就卡住了。其实每次错误的时候,多看看错误信息,自己跟着捋一捋,还是可以找到解决方案滴!
————————————————
版权声明:本文为CSDN博主「Activewaste」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:

ImportError :cannot import name xxxxxx 的三种类型的解决方法_importerror: cannot import name-CSDN博客 文章浏览阅读10w+次,点赞129次,收藏389次。网上关于这种问题的解决方案一大堆,但是绝大多数都是不适用,或者说解决不了问题,我根据别人所遇到的和我自己遇到的,对这个问题整理了一下,希望能解决这个问题。一、缺少这个module或者func或者package缺少python的各种package的话,就自己pip一下根据路径去找,发现是否忘记导入了二、命名问题这个问题也是很难容易解决,找一下路径,对应一下两个name,改一下就行。还有可能出现这种情况的是你使用的是别的官方的代码,版本升级,导致这个函数不用了,改成了另一个函数了,这个时候就要_importerror: cannot import name https://blog.csdn.net/qq_41375609/article/details/106981053

完结撒花

心中的彼岸,终有一天会到达

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste 的相关文章

随机推荐

  • GoLong的学习之路,进阶,微服务之使用,RPC包(包括源码分析)

    今天这篇是接上上篇RPC原理之后这篇是讲如何使用go本身自带的标准库RPC 这篇篇幅会比较短 重点在于上一章对的补充 文章目录 RPC包的概念 使用RPC包 服务器代码分析 如何实现的 总结 Server还提供了两个注册服务的方法
  • 车载以太网笔记

    文章目录 以太网协议分层 协议 中间设备 子网掩码 物理层 测试 内容比较杂 后续会整理 以太网协议分层 协议 中间设备
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)

    WebAppDbTest 项目准备 项目准备 1 net cli 创建项目 2 nuget 包引用和项目结构 2 1 项目添加相关 nuget 包 2 2 WebAppDbTest 项目结构 3 项目代码说明
  • ETL.NET 助力海量数据轻松处理

    ETL NET 助力海量数据轻松处理 什么是 ETL EtlT About ETL About EtlT 谈谈 ETL 作用 ETL 对企业的作用 ETL 对个人职业发展的作用 ETL NET 介绍
  • 一篇能让你彻底搞明白前复权、后复权、不复权的好文

    当我们打开炒股软件看K线走势图时 点击鼠标右键会看到有前复权 后复权 不复权三种模式形态 有的股票三种模式下形态差别很大 选错模式 甚至有的股票用不复权处在底部 用前复权处在顶部 股票位置的高低都分不清 又怎么能选好股票呢 今天用最容易理解
  • 让同事高血压的8个Bug操作集锦

    来源 juejin cn post 7222676935147651132 前言 案例一 案例二 案例三 案例四 案例五 案例六 案例七 案例八 前言 本文的选题来源于一周前我的一次崩溃 当时各种压
  • 机器翻译:跨越语言边界的智能大使

    导言 机器翻译作为人工智能领域的瑰宝 正在以前所未有的速度和精度 为全球沟通拓展新的可能性 本文将深入研究机器翻译的技术原理 应用场景以及对语言交流未来的影响 1 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的技
  • 【UE 材质】任务目标点效果

    效果 步骤 1 新建一个工程 创建一个Basic关卡 2 新建一个材质 这里命名为 M GoalPoint 打开 M GoalPoint 设置混合模式为 半透明 勾选 双面 在材质图表中添加如下节点 此时预览效果如下 继续添加如下节点 此时
  • 外贸行业怎么跟进客户?

    外贸行业怎么跟进客户 建立一个完善的跟进系统需要人性化关怀和高效的技术支持 人性化关怀 是指以客户为中心 关注客户的需求和情感 建立真诚 个性化的关系 高效的技术支持 则是指利用技术和工具来提高跟进效率和服务质量 也就是我们接下来要重点介绍
  • 期末备考 |《现代控制理论》期末备考资料包来啦!

    写在前面 不知不觉又到了学期的末尾 不知道各位计算机er的 专业课复习得怎么样了呢 为了帮助大家更好地 备战期末 从今天开始 岛主将持续为大家更新 计算机期末备考资料 为同学们的绩点护航 今天岛主为大家带来的是 现代控制理论 期末备考资料包
  • java 生成 UUID

    java 生成 UUID 1 生成 UUID import cn hutool core util IdUtil public class IdUtilTest public static void main String args 获取随
  • 大语言模型:开启自然语言处理新纪元

    导言 大语言模型 如GPT 3 Generative Pre trained Transformer 3 标志着自然语言处理领域取得的一项重大突破 本文将深入研究大语言模型的基本原理 应用领域以及对未来的影响 1 简介 大语言模型是基于深度
  • 数据库基础知识

    一 数据库 1 数据库分类 关系型数据库 RDMS最常用 以数据表为核心 非关系型数据库 不存在表的概念 2 常见数据库 Oracle 适用于项目结构庞大的数据库 例如 银行 电信等 MariaDB 与MySQL同源 起源于同一个团队 SQ
  • 波奇学Linux:父子进程和进程状态

    vim编辑器 编写一个程序模拟进程 在vim中查看sleep函数 底行模式输入 写个Makefile自动运行 波奇学Linux yum和vim CSDN博客 运行程序 PID和PPID 查看进程目录信息 实际有过滤出来有两个 一个进程本身一
  • 期末备考 |《数学物理方法》期末备考资料包来啦!

    写在前面 不知不觉又到了学期的末尾 不知道各位计算机er的 专业课复习得怎么样了呢 为了帮助大家更好地 备战期末 从今天开始 岛主将持续为大家更新 计算机期末备考资料 为同学们的绩点护航 今天岛主为大家带来的是 数学物理方法 期末备考资料包
  • Solidity之旅(十)OOP-抽象合约

    抽象合约 abstractcontract 前文在讲合约继承的基类构造函数的参数时 有提到抽象合约 也就是说 如果派生合约未能给其继承的基合约指定构造函数参数时 那么 该派生合约必须声明为抽象合约 abstractcontract 我们知道
  • Graylog 中日志级别及其对应的数字

    在 Graylog 中 日志级别 level 通常使用数字表示 数字越低表示日志级别越高 以下是常见的日志级别及其对应的数字表示 DEBUG 调试 对应数字 7 INFO 信息 对应数字 6 NOTICE 通知 对应数字 5 WARN 警告
  • ERP、SAP、MES 三者之间的区别是什么?

    ERP SAP MES之间有什么区别 SAP 思爱普 是ERP系统与企业管理解决方案 提供商 而ERP和MES是两个用途不一样的 管理系统 也就是说 SAP是一家厂商 提供包含ERP在内的管理系统 SAP搞清楚了 那么 ERP和MES 呢
  • GoLong的学习之路,进阶,Viper(yaml等配置文件的管理)

    本来有今天是继续接着上一章写微服务的 但是这几天有朋友说 再写Web框架的时候 遇到一个问题 就是很多的中间件 redis 微信 mysql mq 的配置信息写的太杂了 很不好管理 希望我能写一篇有管理配置文件的 所以这篇就放到今天写吧 微
  • 【抄作业】ImportError :cannot import name xxxxxx ,原博主Activewaste

    前情介绍 网上关于这种问题的解决方案一大堆 但是绝大多数都是不适用 或者说解决不了问题 我根据别人所遇到的和我自己遇到的 对这个问题整理了一下 希望能解决这个问题 问题分析 一 缺少这个module或者func或者package 缺少pyt