如何解决 Python ModuleNotFoundError 错误
模块对于开发 Python 程序很重要。 使用模块,我们可以分离代码库的不同部分以便于管理。
使用模块时,了解它们的工作方式以及如何将它们导入我们的代码非常重要。 如果没有这种理解或错误,我们可能会遇到不同的错误。
此类错误的一个示例是 ModuleNotFoundError。 在本文中,我们将讨论在 Python 中解决 ModuleNotFoundError 的方法。
使用正确的模块名称解决 Python 中的 ModuleNotFoundError
让我们用两个文件创建一个简单的 Python 代码库,index.py 和 file.py,我们将 file.py 导入到 index.py 文件中。 这两个文件都在同一目录中。
file.py 文件包含以下代码。
class Student():def __init__(self, firstName, lastName):self.firstName = firstNameself.lastName = lastName
index.py 文件包含以下代码。
import fiIe
studentOne = fiIe.Student("Isaac", "Asimov")
print(studentOne.lastName)
现在,让我们运行 index.py。 我们的代码执行的输出如下。
Traceback (most recent call last):File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>import fiIe
ModuleNotFoundError: No module named 'fiIe'
我们有一个 ModuleNotFoundError。 如果仔细观察,您会注意到 import 语句有一个拼写错误,其中 file 被写为 file,l 被大写的 I 替换了。
因此,如果我们使用了错误的名称,就会抛出 ModuleNotFoundError。 编写模块名称时要小心。
现在,让我们更正它并运行我们的代码。
import file
studentOne = file.Student("Isaac", "Asimov")
print(studentOne.lastName)
代码的输出:
Asimov
此外,我们可以使用 from 关键字重写 import 语句并仅导入 Student 类。 这对于我们不想导入模块中存在的所有函数、类和方法的情况很有用。
from file import Student
studentOne = Student("Isaac", "Asimov")
print(studentOne.lastName)
我们将得到与上次相同的输出。
使用正确的语法解决 Python 中的 ModuleNotFoundError
当我们在导入另一个模块时使用错误的语法时,特别是在单独目录中使用模块时,我们可能会得到 ModuleNotFoundError。
让我们使用与上一节相同但有一些扩展的代码来创建一个更复杂的代码库。 要创建此代码库,我们需要以下项目结构。
Project/data/file.pywelcome.pyindex.py
有了这个结构,我们就有了一个包含文件和欢迎模块的数据包。
在 file.py 文件中,我们有以下代码。
class Student():def __init__(self, firstName, lastName):self.firstName = firstNameself.lastName = lastName
在 welcome.py 中,我们有以下代码。
def printWelcome(arg):return "Welcome to " + arg
index.py 包含尝试导入文件和欢迎并使用 Student 类和函数 printWelcome 的代码。
import data.welcome.printWelcome
import data.file.Studentwelcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")print(welcome)
print(studentOne.firstName)
运行index.py的输出:
Traceback (most recent call last):File "c:\Users\akinl\Documents\Python\index.py", line 1, in <module>import data.welcome.printWelcome
ModuleNotFoundError: No module named 'data.welcome.printWelcome'; 'data.welcome' is not a package
该代码尝试直接使用点运算符导入函数 printWelcome 和类 Student,而不是使用 from 关键字或 __init__.py 来轻松绑定子模块。 通过这样做,我们有一个 ModuleNotFoundError 抛给我们。
让我们使用正确的 import 语句语法来防止 ModuleNotFoundError 并直接导入函数和类。
from data.file import Student
from data.welcome import printWelcomewelcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")print(welcome)
print(studentOne.firstName)
代码的输出:
Welcome to Lagos
Isaac
我们可以将数据包中的模块(文件和欢迎)绑定到它的父命名空间。 为此,我们需要 __init__.py 文件。
在 __init__.py 文件中,我们导入包内的所有模块及其函数、类或对象,以便于管理。
from .file import Student
from .welcome import printWelcome
现在,我们可以更简洁地编写我们的 index.py 并很好地绑定到父命名空间 data。
from data import Student, printWelcomewelcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")print(welcome)
print(studentOne.firstName)
输出将与上次代码执行相同。
为防止出现 ModuleNotFoundError 错误消息,请确保您没有错误的导入语句或印刷错误。
相关文章:
如何解决 Python ModuleNotFoundError 错误
模块对于开发 Python 程序很重要。 使用模块,我们可以分离代码库的不同部分以便于管理。 使用模块时,了解它们的工作方式以及如何将它们导入我们的代码非常重要。 如果没有这种理解或错误,我们可能会遇到不同的错误。 此类错误的一个示例是…...
Day62.算法训练
718. 最长重复子数组 class Solution {public int findLength(int[] nums1, int[] nums2) {int max 0;int[][] dp new int[nums1.length][nums2.length];for (int i 0; i < nums1.length; i) {for (int j 0; j < nums2.length; j) {if (nums1[i] nums2[j]) {if (i …...
Linux smbd命令教程:如何配置和管理Samba服务器(附案例详解和注意事项)
Linux smbd命令介绍 smbd是Samba套件的一部分。smbd是一个服务器守护进程,为Windows客户端提供文件共享和打印服务。服务器使用SMB(或CIFS)协议为客户端提供文件空间和打印服务。这与LanManager协议兼容,可以为LanManager客户端提…...
音视频学习(十九)——rtsp收流(tcp方式)
前言 本文主要介绍以tcp方式实现rtsp拉流。 流程图 流程说明: 客户端发起tcp请求,如向真实相机设备请求,端口一般默认554;tcp连接成功,客户端与服务端开始rtsp信令交互;客户端收到play命令响应后,开启线…...
LangChain(0.0.340)官方文档三:Prompts上——自定义提示模板、使用实时特征或少量示例创建提示模板
文章目录 一、 Prompt templates1.1 langchain_core.prompts1.2 PromptTemplate1.2.1 简介1.2.2 ICEL1.2.3 Validate template 1.3 ChatPromptTemplate1.3.1 使用role创建1.3.2 使用MessagePromptTemplate创建1.3.3 自定义MessagePromptTemplate1.3.3.1 自定义消息角色名1.3.3.…...
【算法】合并K个升序链表
这道题主要考察的是归并排序,因为已经升序过了,更好理解了。 当然也可以采用分治的思路;或采用最小堆的思路;面试中校招同学写出一种即可,如果能全概览讲一下,就更加分了。 #############################…...
持续集成交付CICD:GitLab Webhook触发Jenkins流水线
目录 一、实验 1.Jenkins远程下载GiaLab仓库代码 2.curl远程触发Jenkins流水线 3.GitLab Webhook触发Jenkins流水线 二、问题 1.GitLab配置Webhook时报错 一、实验 1.Jenkins远程下载GiaLab仓库代码 (1) Jenkins添加选项参数 (2)添加字符参数 (3)查看构建参数情况 (4)添…...
计算机网络测试题
一 单项选择题(5分) 1、假设要发送的数据为101110,采用CRC的生成多项式是X31,试求应添加在数据后面的余数。(5分) 110 011(答案) 101 001 实际得分:5分 二 填空题(95分) 1、以下3个子地址块…...
vscode如何在没有网络的情况下安装插件
vscode如何在没有网络的情况下安装插件 start 遇到没有网络的电脑,无法直接从插件市场安装vscode的插件。写一下 vscode 插件离线安装的方法. 解决方案 目标电脑没有可以安装插件的网络,那我们只能在有网络的环境下载好我们的插件。然后拷贝软件到无…...
自定义类型:结构体、联合、枚举
目录 一、⾃定义类型:结构体 1.结构体类型 1. 1结构体类型的声明 结构体变量的创建和初始化 1.2 结构的特殊声明 1.3 结构的自引用 2. 结构体内存对齐 ①:对齐规则 ②:offsetof函数 ③:为什么存在内存对⻬? ④ 修改默认对⻬…...
HelpLook可以作为wordpress的替代品,帮助企业快速搭建博客
博客作为一个非常有价值的平台,在当今的数字时代具有重要的意义。对于个人和企业来说,选择一款适合自己需求的专业博客搭建软件至关重要。本篇文章将会通过对比两个专业的博客搭建软件——HelpLook和WordPress,看看为什么我说HelpLook可以作为…...
单片机实现数码管动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码…...
jbrowse基因组浏览器部署
一、jbrowse部署 1.1 jbrowse部署 sudo mkdir /var/www/jbrowse; sudo chown whoami /var/www/jbrowse; # cd into it cd /var/www/jbrowse;1.2 nginx配置 server {listen 80 default_server;listen [::]:80 default_server;server_name _;#root /var/w…...
神经网络 模型表示(一)
神经网络 模型表示 模型表示一 为了构建神经网络模型,我们需要首先思考大脑中的神经网络是怎样的?每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/…...
【漏洞复现】智跃人力资源管理系统GenerateEntityFromTable.aspx接口存在SQL注入漏洞 附POC
漏洞描述 智跃人力资源管理系统是基于B/S网页端广域网平台,一套考勤系统即可对全国各地多个分公司进行统一管控,成本更低。信息共享更快。跨平台,跨电子设备。智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在SQL注入漏洞,攻击者可通过该漏洞获取数据库中的信…...
【matlab程序】画海洋流场
【matlab程序】画海洋流场 clear;clc; file ( ‘0227.nc’); latncread(file,‘latitude’); lonncread(file,‘longitude’); uncread(file,‘water_u’); vncread(file,‘water_v’); [x,y]meshgrid(lon,lat); xx’; yy’; interval4; figure (1) set(gcf,‘color’,[1 1 1…...
线性表 力扣67. 二进制求和
题目 67. 二进制求和 翻译 主要思路 核心思路是像竖式计算一样,不过需要将字符串a和b反转后逐位进行二进制计算得到字符串c,最后再将c反转就是答案 逐位计算的时候利用count,在将a和b当前位置数字相加后通过模2来决定字符串c对应位置的数…...
2312skia,13画布包入门
画矶包快速入门 CanvasKit是用比canvasAPI更高级功能集的Skia来绘画元素到canvas中的wasm模块. 最小应用 此例是个最小Canvaskit应用,它为一帧绘画一个圆角矩形.从unpkg.com中提取wasm二进制文件,但你也可自己构建和管理它. <canvas idfoo width300 height300></c…...
【网络安全技术】消息认证技术
一、哈希函数 1.安全性质 1)抗第一原像攻击(Preimage Resistance) 给定哈希后的值,很难找到哈希前的原消息。这很好理解,需要哈希函数具有单向性。 一个简单的例子就是密码存储系统,用户登录服务器需要…...
智慧安防三大信息技术:云计算、大数据及人工智能在视频监控EasyCVR中的应用
说到三大信息技术大家都很清楚,指的是云计算、大数据和人工智能,在人工智能(AI)快速发展的当下,例如常见的大数据分析、人工智能芯片生产的智能机器人等等,在工作、生活、教育、金融、科技、工业、农业、娱…...
GEE实战:手把手教你用Sentinel-2数据计算植被覆盖度(附完整代码与避坑指南)
GEE实战:从零到一掌握Sentinel-2植被覆盖度计算全流程 清晨的阳光透过实验室的窗户洒在桌面上,一位生态学研究生正盯着电脑屏幕发愁——导师要求她在一周内完成研究区域的植被覆盖度分析,但GEE平台上那些晦涩的代码和突如其来的报错信息让她手…...
YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统
YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统 想快速验证一个智能监控的想法,却卡在繁琐的环境配置和模型部署上?从安装CUDA、配置Python环境,到调试各种依赖库,可能半天时间就过去了,真正的业务逻辑…...
SmallThinker-3B开源镜像实操:边缘部署+草稿加速双场景落地指南
SmallThinker-3B开源镜像实操:边缘部署草稿加速双场景落地指南 1. 引言:为什么你需要关注SmallThinker-3B? 如果你正在寻找一个既能在边缘设备上流畅运行,又能作为大模型“加速器”的AI工具,那么SmallThinker-3B-Pre…...
Kandinsky-5.0-I2V-Lite-5s惊艳效果展示:古风人物图→衣袖飘动+发带飞扬动态视频
Kandinsky-5.0-I2V-Lite-5s惊艳效果展示:古风人物图→衣袖飘动发带飞扬动态视频 1. 模型效果震撼开场 想象一下,你有一张精美的古风人物插画,画中女子衣袂飘飘、发带轻扬。现在,只需一个简单的操作,就能让这幅静态画…...
为什么Restormer能在图像修复任务上超越CNN?深入拆解它的三个核心设计
为什么Restormer能在图像修复任务上超越CNN?深入拆解它的三个核心设计 在图像修复领域,从早期的传统滤波方法到后来的深度卷积网络,技术迭代始终围绕着一个核心矛盾:如何平衡局部细节修复与全局结构一致性。当U-Net等CNN架构在去噪…...
OpenClaw错误排查大全:Phi-3-vision-128k-instruct对接常见问题
OpenClaw错误排查大全:Phi-3-vision-128k-instruct对接常见问题 1. 问题背景与准备工具 上周在尝试用OpenClaw对接Phi-3-vision-128k-instruct模型时,我遇到了各种稀奇古怪的问题。从连接超时到图片解析失败,整个过程就像在玩技术版的"…...
车载测试CAPL编程实战:结构(Struct)在车辆信号解析中的应用
1. 为什么车载测试需要结构(Struct)? 在车载测试领域,我们每天要处理海量的车辆信号数据。想象一下,一辆普通家用车的CAN总线上,每秒可能产生上千条报文,每条报文又包含多个信号值。比如发动机转…...
基于Python的二分类神经网络实战项目
项目简介本项目是一个基于Python的完整神经网络实战案例,旨在通过构建一个双层全连接神经网络(输入层-隐藏层-输出层),解决经典的二分类问题。项目涵盖了从数据生成、模型构建、训练优化到结果可视化的全流程,适合作为…...
MySQL主从延迟
技术文章大纲:MySQL主从延迟根因诊断法引言主从复制在MySQL高可用架构中的重要性主从延迟的常见影响(数据不一致、查询延迟、故障恢复风险)诊断延迟问题的必要性主从延迟的核心原理主从复制的基本流程(binlog生成、传输、重放&…...
“德智米”齐聚港股!德适高研发高增长,领跑 AI 医疗新赛道
随着德适正式登陆港交所,北京智谱、上海 MiniMax、杭州德适组成的 “德智米”AI 三强正式齐聚港股,勾勒出中国 AI 产业从底层基建、C 端应用到 B 端垂直落地的完整版图。其中,德适以“医学影像大模型 医疗垂直场景 高增长商业化”的独特定位…...
