当前位置: 首页 > article >正文

如何解决 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 = firstName
        self.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.py
		welcome.py
	index.py

有了这个结构,我们就有了一个包含文件和欢迎模块的数据包。

在 file.py 文件中,我们有以下代码。

class Student():
    def __init__(self, firstName, lastName):
        self.firstName = firstName
        self.lastName = lastName

在 welcome.py 中,我们有以下代码。

def printWelcome(arg):
    return "Welcome to " + arg

index.py 包含尝试导入文件和欢迎并使用 Student 类和函数 printWelcome 的代码。

import data.welcome.printWelcome
import data.file.Student

welcome = 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 printWelcome

welcome = 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, printWelcome

welcome = printWelcome("Lagos")
studentOne = Student("Isaac", "Asimov")

print(welcome)
print(studentOne.firstName)

输出将与上次代码执行相同。

为防止出现 ModuleNotFoundError 错误消息,请确保您没有错误的导入语句或印刷错误。


http://www.kler.cn/a/153832.html

相关文章:

  • Python 三种方式实现自动化任务
  • fastapi 调用ollama之下的sqlcoder模式进行对话操作数据库
  • 第8章 硬件维护-8.6 产品变更管理(PCN)
  • SSD固态硬盘删除文件基本无法恢复
  • 字节青训-判断数组是否单调、判断回旋镖的存在、字符串解码问题、小F的矩阵值调整、数字字符串中圆圈的数量计算 、小Q的非素数和排列问题
  • 掌握SEO提升网站流量的关键在于长尾关键词的有效运用
  • C 标准库函数
  • 避免20种常见Selenium自动化测试异常,让你的测试更加稳定和可靠!
  • Python---文件操作综合案例
  • 4个Pycharm高效插件
  • 计算机视觉(OpenCV+TensorFlow)
  • 【linux】日志有哪些
  • 鸿蒙(HarmonyOS)应用开发——容器组件(List组件)
  • python 加马赛克
  • clickhouse -- clickhouse解析复杂JSON数组
  • 【开源】基于JAVA的超市账单管理系统
  • Java核心知识点整理大全26-笔记
  • 解决ubuntu编译aosp报错问题:error while loading shared libraries: libncurses.so.5
  • Oracle(2-10) User-Managed Backups
  • Opencv拖动条控制均值滤波卷积核大小,拖动条控制是否保存(涉及知识点:cv2.createTrackbar和cv2.getTrackbarPos的使用)
  • 【性能测试】JMeter:集合点,同步定时器的应用实例!
  • 【前端】大文件切片上传性能优化 使用 web worker 多线程
  • 2023年12月2日历史上的今天大事件早读
  • Boot工程快速启动【Linux】
  • el-select实现可复制一段“关键词“(多个)实现搜索 以及 回车选中搜索项
  • 使用dirmap命令行时报错,提示缺少gevent模块