如何解决Python中ModuleNotFoundError错误

 更新时间:2023年12月03日 08:39:37   作者:迹忆客  
使用模块时,了解它们的工作方式以及如何将它们导入我们的代码非常重要, 如果没有这种理解或错误,我们可能会遇到不同的错误,本文我们就来讨论一下在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 错误消息,请确保您没有错误的导入语句或印刷错误。

到此这篇关于如何解决Python中ModuleNotFoundError错误的文章就介绍到这了,更多相关Python ModuleNotFoundError错误内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python实现for循环倒序遍历列表

    Python实现for循环倒序遍历列表

    这篇文章主要介绍了Python实现for循环倒序遍历列表,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python virtualenv虚拟环境配置与使用教程详解

    python virtualenv虚拟环境配置与使用教程详解

    这篇文章主要介绍了python virtualenv虚拟环境配置与使用教程详解,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 如何远程使用服务器上的Jupyter notebook

    如何远程使用服务器上的Jupyter notebook

    这篇文章主要介绍了如何远程使用服务器上的Jupyter notebook,主要是在服务器端执行操作,需要特别注意为了防止远程中断,使用挂起操作,即执行nohup jupyter notebook,需要的朋友可以参考下
    2023-02-02
  • 编写Python脚本来获取mp3文件tag信息的教程

    编写Python脚本来获取mp3文件tag信息的教程

    这篇文章主要介绍了编写Python脚本来获取mp3文件tag信息的教程,代码基于Python2.x,文中的注释很详细,需要的朋友可以参考下
    2015-05-05
  • Django如何在不停机的情况下创建索引

    Django如何在不停机的情况下创建索引

    在本篇内容里小编给大家整理的是关于Django如何在不停机的情况下创建索引的相关文章,有兴趣的朋友们参考学习下。
    2020-08-08
  • Python中等待5秒并暂停执行的方法总结

    Python中等待5秒并暂停执行的方法总结

    Python 具有各种功能和库来创建交互式应用程序,用户可以在其中提供输入和响应, 我们可以创建需要暂停应用程序执行的情况,本文主要和大家分享三个Python 中等待 5 秒并暂停执行的方法,有需要的可以参考下
    2023-10-10
  • pyqt环境搭建教程

    pyqt环境搭建教程

    pyqt是一个用于创建GUI应用程序的跨平台工具包,它将python与qt库融为一体,本文给大家分享pyqt环境搭建教程,感兴趣的朋友一起看看吧
    2023-11-11
  • 关于Python 实现tuple和list的转换问题

    关于Python 实现tuple和list的转换问题

    这篇文章主要介绍了Python 实现tuple和list的转换,文中介绍了list(列表)和tuple(元组)共同点和区别,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • python实现批量修改文件名代码

    python实现批量修改文件名代码

    本文给大家分享的是一段仅仅10行代码就实现了批量修改文件名的python脚本,推荐给大家,有需要的小伙伴可以参考下
    2017-09-09
  • 详细解析Python中的变量的数据类型

    详细解析Python中的变量的数据类型

    这篇文章主要介绍了详细解析Python中的变量的数据类型,是Python学习当中的基础知识,需要的朋友可以参考下
    2015-05-05

最新评论