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

news2024/9/29 9:21:43

前情介绍

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

问题分析

一、缺少这个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 namehttps://blog.csdn.net/qq_41375609/article/details/106981053

 

完结撒花

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

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

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

相关文章

java springboot+jsoup写一段爬虫脚本 将指定地址的 图片链接 文本 超链接地址存入自己的属性类对象中

首先 还是最基本的 要在 pom.xml 引入依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.14.1</version> </dependency>然后 我们可以在项目中创建一个属性类 我这里就叫 WebContent了…

ArkTS组件通信

父子通信 情况一&#xff1a;子组件只展示父组件中的状态 父组件通过 State修饰符 定义变量&#xff0c;子组件通过 Prop修饰符 获取变量。 Prop是 「单向传递」&#xff0c;父组件将变量「拷贝」一份交给子组件使用&#xff0c;子组件不可修改变量。 父组件 // 声明变量 …

Debian openmediavault 自建Nas系统共享,raid5与btrfs文件系统无损原数据扩容

一、适用环境 1、企业自有物理专业服务器&#xff0c;一些敏感数据不外流时&#xff0c;使用openmediavault自建NAS系统&#xff1b; 2、在虚拟化环境中自建NAS系统&#xff0c;用于内网办公&#xff0c;或出差外网办公时&#xff0c;企业内的文件共享&#xff1b; 3、虚拟化环…

大模型时代-让AI自己开发自己

一、前言 AI能自己开发自己或者开发和一个很像自己的东西吗&#xff1f;显然是可以的&#xff01;因为AI模型的算法&#xff0c;基本就是学习和递归 二、大模型的算法实现例子 本例子就是通过AI模型来写 大模型的实现通常涉及到深度学习框架和大量的计算资源。具体的算法代…

RocketMQ源码 Broker-PullRequestHoldService 长轮询消息拉取组件源码分析

前言 PullRequestHoldService 继承了ServiceThread类&#xff0c;它本身是一个线程&#xff0c;以后台方式无线循环运行&#xff0c;支持长轮询&#xff08;默认5秒&#xff09;和短轮询&#xff08;默认1秒&#xff09;两种方式&#xff08;CountDownlatch 方式控制&#xff…

在HTML中如何设置音频和视频?

目录 一、设置音频二、设置视频 一、设置音频 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body> <!-- controls:控制播放暂停的按钮autop…

【Jmeter】Jmeter基础4-Jmeter元件介绍之监听器

2.4、监听器 监听器主要用于收集、统计、查看和分析结果。 2.4.1、察看结果树 作用&#xff1a;查看取样器请求和响应结果&#xff0c;包括消息头&#xff0c;请求的数据&#xff0c;响应的数据等。一般在调试时才用&#xff0c;在实际运行压测时建议禁用&#xff0c;因为大量…

TikTok科技趋势:平台如何引领数字社交革命?

TikTok作为一款颠覆性的短视频应用&#xff0c;不仅改变了用户的娱乐方式&#xff0c;更在数字社交领域引领了一场革命。本文将深入探讨TikTok在科技趋势方面的引领作用&#xff0c;分析其在数字社交革命中的关键角色&#xff0c;以及通过技术创新如何不断满足用户需求&#xf…

element-ui以服务方式调用loading,自定义修改icon

一、以服务的方式调用Loading 除了常用的v-loading、this.$loading我们还可以以服务的方式调用。主要有以下步骤 引入Loading服务 import { Loading } from element-ui;在需要时调用 Loading.service(options);其中 options 参数为 Loading 的配置项&#xff0c;具体见下表…

2023 亚马逊云科技 re:Invent 大会探秘:Aurora 无限数据库的突破性应用

文章目录 一、前言二、Amazon Aurora 无限数据库2.1 亚马逊云科技数据库产品发展历程2.2 什么是 Amazon Aurora Limitless Database&#xff08;无限数据库&#xff09;2.3 Amazon Aurora Limitless Database 设计架构2.4 Amazon Aurora Limitless Database 分片功能2.5 使用 A…

嵌入式开发板qt gdb调试

1&#xff09; 启动 gdbserver ssh 或者 telnet 登陆扬创平板 192.168.0.253&#xff0c; 进入命令行执行如下&#xff1a; chmod 777 /home/HelloWorld &#xff08;2&#xff09; 打 开 QTcreator->Debug->StartDebugging->Attach to Running Debug Server 进行…

MySQL之DML语句

文章目录 DML语句创建表添加表字段**插入数据**查询数据更新数据替换数据删除数据清除表数据删除表 DML语句 数据操作语言DML&#xff08;Data Manipulation Langua&#xff09; 是SQL语言的一个分类&#xff0c;用于对表的数据进行增&#xff0c;删&#xff0c;改&#xff0c…

xtu oj 1328 数码和

题目描述 一个10进制数n在2∼16进制下可以得到的不同的数码和&#xff0c;求在这些数码和中出现次数最多的数码和。 比如20&#xff0c; 其中数码和2和4分别出现了3次&#xff0c;为最多出现次数。 输入 第一行是一个整数T(1≤T≤1000)&#xff0c;表示样例的个数。 以后每行…

python selenium chrome114版本之后环境配置和携带缓存打开chrome

尽力局 chrome驱动环境配置chrome打开带缓存设置待缓存打开自动关闭浏览器自动关闭浏览器弹窗 最终代码找资料难啊最终效果代码 依赖包和生成依赖包方法关闭谷歌升级 chrome驱动环境配置 网上找到的资料&#xff0c;我现在安装的是120版本的&#xff0c;这个资料是可行的。比较…

猫头虎博主深度探索:Amazon Q——2023 re:Invent大会的AI革新之星

猫头虎博主深度探索&#xff1a;Amazon Q——2023 re:Invent大会的AI革新之星 授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科…

一文带你掌握Spring事务核心:TransactionDefinition详解!

TransactionDefinition是Spring框架中用于定义事务属性的核心接口。在Spring的事务管理中&#xff0c;这个接口扮演着至关重要的角色&#xff0c;它允许开发者定制事务的各种属性&#xff0c;如隔离级别、传播行为、超时时间以及是否只读。 基本介绍 TransactionDefinition 接…

Python创建代理IP池详细教程

一、问题背景 在进行网络爬虫或数据采集时&#xff0c;经常会遇到目标网站对频繁访问的IP进行封禁的情况&#xff0c;为了规避这种封禁&#xff0c;我们需要使用代理IP来隐藏真实IP地址&#xff0c;从而实现对目标网站的持续访问。 二、代理IP池的基本概念 代理IP池是一个包…

《使用ThinkPHP6开发项目》 - 登录接口三【表单验证】

《使用ThinkPHP6开发项目》 - 登录接口一-CSDN博客 https://blog.csdn.net/centaury32/article/details/134974860 在设置用户登录时&#xff0c;由于安全问题会对登录密码进行加密 表单验证这里也可以使用ThinkPHP6自带的验证规则&#xff0c;创建一个验证管理员的文件 ph…

〖大前端 - 基础入门三大核心之JS篇(52)〗- 指定函数上下文 - call和apply

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…

大数据存储技术(1)—— Hadoop简介及安装配置

目录 一、Hadoop简介 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;Hadoop发展历史 &#xff08;三&#xff09;Hadoop三大发行版本 &#xff08;四&#xff09;Hadoop的优势 二、Hadoop的组成 &#xff08;一&#xff09;Hadoop1.x和Hadoop2.x的区别​…