【mmcv报错】ModuleNotFoundError: No module named ‘mmcv.runner

news2024/11/26 22:24:05

跑一个代码需要用到mmcv和mmseg
其中有两行代码:

from mmcv.runner import load_checkpoint
from mmseg.utils import get_root_logger

我先是按照官方推荐的安装方法去安装了mmcv和mmseg

pip install -U openmim
mim install mmcv

它会自动帮你安装mmengine
我的cuda是11.6 torch是2.0.1
他帮我安装的mmcv是2.1.0,mmengine是0.9.1
然后pip install mmsegmentation
安装的mmseg版本是1.2.1

安装完了之后出现问题:
mmcv.runner标红报错,说mmcv下面没有runner
ModuleNotFoundError: No module named 'mmcv.runner
我在网上搜索,有博客说不能安装mmcv,要安装mmcv-full
然后我把mmcv卸载,去安装mmcv-full(被坑惨了)
先是遇到一个问题,安装mmcv-full卡住
一直卡在buliding wheels for mmcv
我去网上一搜,很多遇到这个问题的
在这里插入图片描述
解决方法都是说,跟cuda版本不符,要安装对应的版本。
我试验了多个版本,都不行,安装不了
最后甚至在这个网站下载了离线的whl包。https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
最终安装成功,但是带来的问题更多,
找不到libcudaert.so.10.2
No module named ‘mmcv._ext‘
整整折腾了一个多小时,反正各种问题,大概都是在说,版本跟cuda、torch不匹配
(其实人家自动给你安装的mmcv就是符合你机器版本的,但是自动安装mmcv-full不了,手动安装的又不匹配,,,,)
最后换了思路去解决:
这两行代码的问题:

from mmcv.runner import load_checkpoint
from mmseg.utils import get_root_logger

首先:找不到mmcv.runner
我去看了源码,发现是版本升级的问题,我用的高版本的mmcv,结构已经变了
runner在mmengine下面,所以修改如下
from mmengine.runner import load_checkpoint
第二个错误:
mmseg.utils下面找不到get_root_logger
我感觉还是版本问题,高版本的结构变了
但是我去mmseg的源码下搜索了get_root_logger,搜不到,根本没有这个
然后我去mmcv和mmengine的源码下都搜索了,都没有这玩意

emm,然后看了下代码,这个东西就是用来记录日志的

from mmseg.utils import get_root_logger
logger = get_root_logger()

我看了下mmcv中日志是如何记录的

import logging
logger = logging.getLogger()

那既然这个找不到get_root_logger
直接把这句注释了
改成这样

import logging
logger = logging.getLogger()

运行发现没什么问题,解决了。

总结:
这个解决办法其实不好,跑别人的代码最好还是不用动别人的代码,配好相应的环境去运行,因为你动了某一处,不清楚会不会影响别的
但是我这是特殊情况,这个代码没有告知所需的库的版本,我也安装了各个版本的mmcv和mmcv-full最后实在是搞不定,才只好改了她的代码
另外,这玩意兼容性做的真的差,你升级版本你直接把原来的函数都给删除了,名字都改了,那之前的代码不都g了,让人怎么维护,怎么升级

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

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

相关文章

关于Vue使用props传值遇到的一些问题

一、The data property “tableData” is already declared as a prop. Use prop default value instead. 翻译过来:数据属性“tableData”已声明为prop。请改prop默认值。 将父组件的prop传过去变量改一下 二、prop传值,子组件比父组件先渲染&#…

内存取证 worldskills3.vmem与gs02.jpg题目WP

worldskills3.vmem 题目信息 获取admin用户密码是多少? 获取ip和主机名是什么? 获取桌面上的flag.txt文件的内容是什么? 服务器存在一个挖矿病毒,矿池地址是? 恶意代码在系统中注册了服务,服务名是什么&a…

pytest 的使用===谨记

发现用例的规则 a) 文件test_.py开头和_test.py结尾 b) Test开头的类中test开头的方法(测试类不能带有__init__方法) c) 模块中test开头的函数(可以不在class中) 注意点: pytest是以方法为单位发现用例的,你…

单通道低压 H 桥电机驱动芯片AT9110H 兼容L9110 马达驱动芯片

H桥直流电机驱动电路是一种用于控制直流电机运转的电路,其主要特点是可以实现正反转控制,控制电机转速和方向,同时也具有过流保护功能。 H桥电路由四个功率晶体管和一些辅助电路组成,其中两个晶体管用于控制电机正转,…

SciCoMap颜色包_共180种--全平台可用

SciCoMap颜色包_共180种–全平台可用 往期推荐: 海洋专用cmocean颜色包_共22种–全平台可用 Python语言_matplotlib包_共80种–全平台可用 Python语言_single_color_共140种–全平台可用 R语言_RColorBrewer包–全平台可用 R语言gplots包的颜色索引表–全平台可用 …

Linux-Shell命令行解释器的模拟实现

引言:本篇文章主要是简单实现一个shell命令行解释器,可以支持基础常见的linux的命令,支持内建命名echo、cd,同时支持重定向的操作! 一、代码剖析 1. 头文件引入: 因代码是在linux下实现,引入的…

性能测试知多少---了解前端性能

我的上一篇博文中讲到了响应时间,我们在做性能测试时,能过工具可以屏蔽客户端呈现时间,通过局域网的高宽带可以忽略数据传输速度的障碍。这并不是说他们不会对系统造成性能影响。相反,从用户的感受来看,虽然传输速度受…

阿里巴巴1688商品详情 API 接口示例

1688.item_get 公共参数 请求地址: https://o0b.cn/anzexi 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_…

软件外包开发质量控制方法

在软件外包开发项目中,质量控制是确保交付的软件符合预期质量标准的关键步骤。以下是一些常用的软件外包开发质量控制方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 需求明确&#x…

wpf添加Halcon的窗口控件报错:下列控件已成功添加到工具箱中,但未在活动设计器中启用

报错截图如下: 注意一下新建工程的时候选择wpf应用而不是wpf应用程序。 添加成功的控件:

博弈论——霍特林博弈(Hotelling Game)

0 引言 前一篇文章在特殊的伯特兰德博弈模型的基础上,解释了伯特兰德悖论,我们先简单回顾一下: 三个假设: (1)各寡头厂商通过选择价格进行竞争; (2)各寡头厂商生产的产品…

Devchat-AI 编程助手:Devchat-AI 尝鲜测评+场景实践

本心、输入输出、结果 文章目录 Devchat-AI 编程助手:Devchat-AI 尝鲜测评场景实践前言DevChat 简介DevChat 是什么DevChat AI 编程助手有哪些优势 DevChat 的申请和使用运行环境要求DevChat 的申请DevChat 激活DevChat 定价DevChat 的安装DevChat 的简单使用 相关图…

【GEE】使用GEE批量查询下载Landsat8数据

刚发了一篇Landsat8地表温度反演的博文,顺便分享一下如何使用GEE批量查询、下载Landsat8数据集。代码比较简单就是查询函数和导出函数,然后还有一个显示函数。网上的教程一大堆,都差不多的代码,在这里要感谢一些前辈们的无私奉献。…

JUC-1-并发编程基础

一 并发编程简介 1 什么是并发编程? 所谓并发编程是指在一台处理器上 “同时” 处理多个任务。并发是在同一实体上的多个事件。多个事件在同一时间间隔发生。 并发编程,从程序设计的角度来说,是希望通过某些机制让计算机可以在一个时间段内…

技术分享 | web自动化测试-PageObject 设计模式

为 UI 页面写测试用例时(比如 web 页面,移动端页面),测试用例会存在大量元素和操作细节。当 UI 变化时,测试用例也要跟着变化, PageObject 很好的解决了这个问题。 使用 UI 自动化测试工具时(包…

LangChain+LLM实战---Embedding、从入门到生产使用

搜索功能已经深入到我们的日常生活中,我们常说“Google一下就知道了”,用户已经开始期望几乎每个应用程序和网站都提供某种类型的搜索功能。随着有效搜索变得越来越相关(双关语),寻找新的方法和体系结构来改进搜索结果对于架构师和开发人员来…

Vue-SplitPane可拖拽分隔面板(随意拖动div)

npm install vue-splitpane一、使用 (1)局部使用: 在vue文件中 import splitPane from vue-splitpane export default {componnets: { splitPane } }(2)全局使用: 在main.js文件注册 import splitPane…

openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述

文章目录 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述116.1 背景信息116.2 操作步骤 openGauss学习笔记-116 openGauss 数据库管理-设置数据库审计-审计概述 116.1 背景信息 数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作…

放卷开环张力控制(伺服转矩模式应用)

收放卷张力开环闭环控制算法,请参考下面文章链接: PLC张力控制(开环闭环算法分析)_RXXW_Dor的博客-CSDN博客文章浏览阅读4k次,点赞3次,收藏3次。里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算…

leetcode:2926. 平衡子序列的最大和 【树状数组维护最大前缀和】

题目链接 lc2926 题目描述 题目思路 定义b[i] nums[i] - i 目标是从b中找到一个非降子序列使得元素和最大 # b[i] nums[i] - i # 找到b的一个非降子序列使得元素和最大 # f[i]: 子序列最后一个数下标是i,对应的最大子序列 # f[i] max (max f[j], 0) nums[i] …