ModuleNotFoundError:如何解决 no module named Python 错误?

当你在一个 Python 文件中导入一个模块时,Python 试图通过几种方式来处理这个模块。有时,Python 会在之后抛出 ModuleNotFoundError。这个错误在 Python 中是什么意思?

顾名思义,当你试图访问或使用一个找不到的模块时就会发生这个错误。以标题为例,找不到“名为 Python 的模块”。

这里的 Python 可以是任何模块。当我试图导入一个找不到的 numpys 模块时,会出现下面这个错误:

import numpys as np

错误是这样的:在这里插入图片描述
以下是一些可能找不到模块的原因:

你的电脑上没有安装你想导入的模块
你对模块的拼写不正确(这仍然与前一点有关,即拼写错误的模块没有安装)…例如,在导入时将 numpy 拼成 numpys
你对一个模块使用了不正确的大小写(这仍然与第一点有关)…例如,在导入过程中把 numpy 拼成 NumPy,就会出现找不到模块的错误,因为这两个模块是不一样的
你使用错误的路径导入了一个模块

如何解决 Python 中的 ModuleNotFoundError 问题

正如我在上一节中提到的,有几个原因可能导致找不到模块。下面是一些解决方案。
1.确保导入的模块已经安装
以 numpy 为例。你在你的代码中,在一个叫作 “test.py” 的文件中使用这个模块,像这样:

import numpy as np

arr = np.array([1, 2, 3])

print(arr)

如果你试图用 python test.py 运行这段代码,会得到这个错误:

ModuleNotFoundError: No module named "numpy"

那么很有可能是你的设备上没有安装 numpy 模块。你可以这样安装该模块:

python -m pip install numpy

安装后,之前的代码将正确工作,终端将打印结果:

[1, 2, 3]

2.确保模块的拼写正确

在某些情况下,你可能已经安装了你需要的模块,但试图使用它时仍然会出现 ModuleNotFound 错误。在这种情况下,可能是你的拼写不正确。以这段代码为例:`

import nompy as np

arr = np.array([1, 2, 3])

print(arr)

在这里,你已经安装了 numpy,但运行上述代码会出现这个错误:

ModuleNotFoundError: No module named "nompy"

This error comes as a result of the misspelled numpy module as nompy (with the letter o instead of u). You can fix this error by spelling the module correctly.

3. 确保模块的大小写正确

与模块未找到错误的拼写问题类似,也可能是你的模块拼写正确,但用错了大小写。这里有一个例子:

import Numpy as np

arr = np.array([1, 2, 3])

print(arr)

对于这段代码,你已经安装了 numpy,但运行上述代码会出现这个错误:

ModuleNotFoundError: No module named 'Numpy'

由于大小写的不同,numpy 和 Numpy 是不同的模块。你可以通过用正确的大小写拼写模块来解决这个错误。

4.确保你使用正确的路径

在 Python 中,你可以使用绝对路径或相对路径从其他文件导入模块。在这个例子中,我将着重介绍绝对路径。

当你试图从错误的路径访问一个模块时,你也会得到这里找不到模块的结果。这里有一个例子:

假设你有一个名为 test 的项目文件夹。在它里面,你有两个文件夹 demoA 和 demoB。

demoA 有一个 init.py 文件(以显示它是一个 Python 包)和一个 test1.py 模块。

demoA 也有一个 init.py 文件和一个 test2.py 模块。

结构如下:

└── test
    ├── demoA
        ├── __init__.py
    │   ├── test1.py
    └── demoB
        ├── __init__.py
        ├── test2.py

这是 test1.py 的内容:

def hello():
  print("hello")

假设你想在 test2.py 中使用这个声明的 hello 函数。下面的代码将抛出一个未找到模块的错误:

import demoA.test as test1

test1.hello()

代码将抛出以下错误:

ModuleNotFoundError: No module named 'demoA.test'

其原因是我们使用了错误的路径来访问 test1 模块。正确的路径应该是 demoA.test1。当你纠正了这一点,代码就可以运行了:

import demoA.test1 as test1

test1.hello()
# hello

我的职业生涯开始和大多数码农一样,刚开始接触都是最基础的软件测试、编程语法。那时候在B站CSDN到处找学习资源,在这个吃技术的IT行业来说,不断学习是至关重要的。但是我之前做的是最基础的业务工作,随着时间的消磨,让我产生了对自我价值和岗位意义的困惑。

我的程序员之路,一路走来都离不开每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友特意花了一段时间整理编写了下面的《python架构师学习路线》,也整理了不少【网盘资源】,需要的朋友可以公众号【Python大本营】获取网盘链接。
希望会给你带来帮助和方向。

总结

为了处理一个导入的模块,Python 检查像内置库、已安装的模块和当前项目中的模块这样的地方。如果它不能处理这个模块,它就会抛出 ModuleNotFoundError。

有时你没有安装那个模块,所以你必须安装它。有时是模块拼写错误,或命名时用了错误的大小写,或路径错误。在这篇文章中,我展示了如果你遇到这种错误的四种可能的修复方法。

我希望你能从文章中得到启发:)

你可能感兴趣的:(python,开发语言)