Qt5界面Qt Designer上添加资源图片后,ModuleNotFoundError: No module named ‘rcc_rc‘ 的终极解决方案

news2024/9/23 11:24:09

在网上找了很久都没弄明白,最后还是自己思考解决了。

起因:

用 Qt Designer 添加资源文件作为背景图,编译

\resource\static\qrc> pyuic5 -o .\xx.py .\xx.ui

发现在 xx.py 文件末尾中多了一个语句:

import rcc_rc

然后运行就报错了。

ModuleNotFoundError: No module named ‘rcc_rc‘

首先,目录结构先看一下,项目根目录下:
在这里插入图片描述
xx.py 和 rcc_rc 都在 qrc 目录下。明明就在同级目录中,为何 import 会不行呢?


原因解析:

众所周知,C语言源文件中经常用 include “xxx.h” 的语句,用来包含(导入) xxx.h 文件。默认会先从当前目录查找 xxx.h,没有找到再去环境变量 Path 的路径下去查找。

但是,当初就没想过,为什么会默认从当前目录查找?因为双引号?是谁识别的双引号?是编译器。识别我们代码的外部环境决定的。
如果它不识别双引号,我们自然就得写成绝对路径。

同理。

import rcc_rc 之所以会报错,也是因为外部环境不识别,所以我们只能写成绝对路径:

import resource.qrc.rcc_rc

但是这个文件是自动生成,这么改只是治标不治本。

resource 之上就是项目的根目录。
也就说,根目录是被识别的,但是我的 qrc 目录却没有。

所以,我只要让 qrc 也能够别“编译器”识别就行了。

解决办法:

1.将 qrc 目录设置为 Sources Root,代码根目录之一。

在这里插入图片描述

当然,如果你愿意的话,也可以将项目里的目录都同样设置一遍过去。所有的文件都不需要再写什么 from xxx import yyy 了,直接 import yyy 。
但这样做并不好。如果两个文件夹里有同名文件,就撞衫了。这可能也是pycharm 默认不把所有目录设置为根目录的原因吧。

2.选择项目的配置,Edit configurations… 给 Add source roots to PYTHONPATH 打勾,添加代码根目录到python环境变量。

在这里插入图片描述

这样以后,你的 xx.ui生成的 xx.py 文件末尾依然是 import rcc_rc ,但不再会报错了。

因为 rcc_qrc 所在的目录 qrc 已经被你设置为了 根目录。在 xx.py 中 import 的时候,会自动在根目录(包含 qrc 目录)下查找 rcc_rc ,这下肯定就可以找到了。

同理,所有找不到模块的问题,要么是路径不对(大部分是),要么是根目录不对。

如果 qrc 下有多层目录,那么多设置几个目录就行,只要让 import 时,这个 正好在你设置的根目录下就没有找不到的道理。

影响?

谨慎的朋友可能会想,这样做对最终的 EXE ,软件是否有影响?不会的。

import 语句的本质:

import xxx ,会查找包(模块)所在路径,然后加载包,加载完后,该包内所有的顶层代码都会执行一次,包括里面的函数,类,变量等。

而我们卡在第一步,查找路径。最终结果都是一样的,都是导入 rcc_rc 包。所以怎么写这个路径并不重要,能够找到包就行了。

如果还是遇到问题,可以评论区留言。

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

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

相关文章

【前端demo】简易计算器 原生实现

文章目录 效果代码htmlcssjs 其他demo:https://blog.csdn.net/karshey/article/details/132585901 效果 效果预览:https://codepen.io/karshey/pen/RwERjGz 参考: js实现仿华为手机计算器,兼容电脑和手机屏幕_dengluandai1740的…

2023年9月15厦门双人

预算3000两天夜厦门之路 一、9月15早上六点起床 1. 20分钟收拾东西出门 06:20 2. 出门路过早餐摊买早饭吃 06:30 3. 地铁到虹桥 8:20到 4. 火车到厦门北 5:00到(直接去玩) 二、住 暂定 中山路步行街附近 三、吃玩 1. 第一天晚上 直接去 白城沙滩「…

Debian12搭建Nextcloud最新版并frp到二级域名

起因:因为台风的原因,要居家办公,但正值公司业务最要紧的时刻,所以需要搭建远程共享,结果发现基于原有的经验,已经难以适应版本更新带来的问题,所以就解决方法,进行了一次重新总结&a…

ssm+vue乐购游戏商城系统源码和论文

ssmvue乐购游戏商城系统源码和论文115 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 随着社会的发展,游戏品种越来越多,计算机的优势和普及使得乐购游戏商城系统的开发成为必需…

气候变化下的DNDC模拟

DNDC(Denitrification-Decomposition,反硝化-分解模型)是目前国际上最为成功的模拟生物地球化学循环的模型之一,自开发以来,经过不断完善和改进,从模拟简单的农田生态系统发展成为可以模拟几乎所有陆地生态…

[C++网络协议] I/O复用

具有代表性的并发服务器端实现模型和方法: 多进程服务器:通过创建多个进程提供服务。 多路复用服务器:通过捆绑并统一管理I/O对象提供服务。✔ 多线程服务器:通过生成与客户端等量的线程提供服务。 目录 1. I/O复用 2. select函…

数据恢复工具推荐,记好这3款!

“我真的总会因为数据丢失而烦恼。有些文件都不知道什么时候删除的,想找的时候就找不到了。各位朋友有什么好的数据恢复工具可以推荐吗?真的很需要!” 无论保存在电脑、u盘、还是手机里的数据,都有可能会被误删或由于各种原因而丢…

Vue框架--Vue中的数据绑定

Vue中有两种数据绑定的方式 1.单向数据绑定(v-band):数据只能够从data流向页面 2.双向数据绑定(v-model):数据不仅仅能够从data流向页面,也可以从页面流向data。 备注: 1.双向绑定一般都应用在表单类元素上。(如:input、select等有value属性值的标签上) 2.…

【开发】视频云存储/安防监控视频智能分析网关V3:明烟/明火检测详解

智能分析网关系列是基于边缘AI计算技术,可对前端摄像头采集的视频流进行实时检测分析,能对监控画面中的人、车、物进行识别。我们的AI边缘计算网关硬件——智能分析网关目前有5个版本:V1、V2、V3、V4、V5,每个版本都能实现对监控视…

iOS开发Swift-6-深色模式,类与对象,MVC模式,弹出框,闭包-趣味问答App

1.创建趣味问答App项目 2.创建一个问题文本,水平居中约束。 创建蓝、红两个按钮,放入Stack View中,给StackView水平居中约束,下边约束,设置两按钮间距为20. 设置进度条view与safe View关系为equal width。设置他们的比…

关于在香橙派安装mysql时遇到的坑

前言 基础环境:硬件:香橙派5操作系统:openkylincpu架构:arm 过程:最近有个任务,要在新的环境中验证一些服务是否可用。目的时向全国产化靠拢。 需要在香橙派上安装openkylin,一开始尝试的是香橙…

A. Channel

题目:样例: 输入 4 5 5 3 -- 5 2 3 - 5 4 2 - 5 0 7 -输出 YES NO MAYBE YES 题意: 给出 目的人数n看到通告的数量,初始人数m上线的数量,通知系统上线q条消息,‘-’表示有人下线,‘’表示有人上…

京东API接口解析,实现按关键字搜索商品

京东开放平台提供了丰富的API接口,用于查询商品、用户、订单等信息。以下是一个基本的示例,解析并实现按关键字搜索商品的API接口。 需要访问京东开放平台并注册一个开发者账号。注册完成后,你需要创建一个应用并获取到API的权限。 在获取到…

不看过程看结果 Web3最霸道架构Intent- Centric能解决啥?

开源区块链网络以太坊诞生的8年里,涌现出不计其数的竞争链,同时也为金融、游戏等场景的链上应用发展奠定了底层基础。唯一令人遗憾的是,8年了,绝大多数互联网用户还是摸不到以区块链为底层的Web3大门。 有数据显示,总…

亚马逊测评的风控挑战与解决方案

做跨境电商测评自养号测评的都知道,亚马逊平台是所有跨境平台中风控最严的,做亚马逊测评实操遇到过各种问题,比如:取消订单(砍单)、掉评、账号批量被封等等 其实这些问题除了亚马逊自身的风控,…

真香:Alibaba开源GitHub星标100K微服务架构全彩进阶手册

前言: 微服务架构作为一种高效灵活的应用架构,正在成为企业级应用开发的主流选择。在众多的微服务架构指南中,阿里巴巴开源的GitHub微服务架构全彩进阶手册备受瞩目,其100star更是证明了其在开发者社区中的重要地位。 这本手册汇…

微服务演变及怎么拆分微服务

微服务演变 ⼀、微服务演变过程 版本1.0 ⼏年前,⼩明和⼩⽪⼀起创业做⽹上超市。⼩明负责程序开发,⼩⽪负责其他事宜。当时互联⽹还不发 达,⽹上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要⼀个⽹站…

一文5000字从0到1使用Jmeter实现轻量级的接口自动化测试(图文并茂)

接口测试虽然作为版本的一环,但是也是有一套完整的体系,有接口的功能测试、性能测试、安全测试;同时,由于接口的特性,接口的自动化低成本高收益的,使用一些开源工具或一些轻量级的方法,在测试用…

文心一言 VS 讯飞星火 VS chatgpt (84)-- 算法导论8.2 1题

一、用go语言,参照图8-2 的方法,说明 COUNTING-SORT 在数组 A(6,0,2,0,1,3,4,6,1,3,2)上的操作过程。 文心一言: Counti…

2023-8-31 有边数限制的最短路(bellman-ford)

题目链接&#xff1a;有边数限制的最短路 #include <iostream> #include <cstring> #include <algorithm>using namespace std;const int N 510, M 10010;int n, m, k; int dist[N], backup[N];// 存放边的信息 struct Edge {int a, b, w; }edges[M];void …