Py学习  »  Python

Python为什么总是报ModuleNotFoundError?6种常见原因和解决方法

码上编程学习社 • 4 天前 • 54 次点击  

刚开始学 Python,很多人都见过这行红字:

ModuleNotFoundErrorNo module named 'requests'

第一反应往往是:“是不是Python没装好?”

其实,ModuleNotFoundError 的意思很直接:Python在当前环境和搜索路径里,没有找到你要导入的模块。

与其反复重装,不如按照下面6种情况逐个排查。

一、模块名拼错了

这是最简单,也最容易忽略的问题。

比如:

import requets

正确应该是:

import requests

模块名、大小写、下划线写错,都可能导致导入失败。所以看到报错后,第一步先检查 import 后面的名称。

二、第三方库根本没有安装

像 os、math 属于Python自带模块,一般不用额外安装。

但 requests、pandas 等第三方库,需要先安装:

python -m pip install requests

可以通过下面的命令检查:

python -m pip show requests

如果查不到,就说明当前Python环境里没有这个包。

三、包装了,但装错Python环境了

这是我认为新手最容易踩的坑之一

电脑里可能同时存在系统Python、虚拟环境以及PyCharm配置的解释器。你用一个Python安装requests,却用另一个Python运行代码,自然还是找不到。

检查当前解释器:

import sys print(sys.executable)

再执行:

python -m pip --version

重点看两边显示的路径是否对应。

四、虚拟环境没有激活

假设你把requests安装到了项目的 .venv 中,下次打开终端却忘记激活,也可能导致环境不一致。

Windows:

.venv\Scripts\activate

macOS/Linux:

source .venv/bin/activate

激活后,终端前面通常会出现:

(.venv)

再运行项目试试。

五、自己写的模块路径不对

如果导入的是自己写的文件,例如:

import calculator

项目结构却是:

my_project/├── main.py└── utils/    └── calculator.py

那就不能想当然地直接 import calculator。

如果 utils 按包来组织,可以根据项目结构写成:

from utils import calculator

遇到这种情况,不要看到ModuleNotFoundError就去pip安装。先分清楚:你导入的是第三方库,还是自己项目里的模块。

六、文件名和第三方库“撞名”了

还有一个比较隐蔽的问题:自己创建的Python文件与第三方库或标准库重名。

例如项目里自己写了:

requests.py

代码中又:

import requests

Python可能优先找到你自己的 requests.py,进而产生导入异常或循环导入等问题。

因此项目文件尽量不要随便取 requests.py、json.py、random.py 这类容易与已有模块冲突的名字。

写在最后

以后再碰到:

ModuleNotFoundError

先别急着重装Python。

按照这个顺序检查:

名称有没有写错 → 包有没有安装 → Python解释器对不对 → 虚拟环境有没有激活 → 项目路径是否正确 → 文件有没有重名。

很多Python环境问题,真正难的不是“怎么修”,而是先搞清楚代码到底运行在哪个Python环境里

把模块、pip、虚拟环境和解释器之间的关系理顺之后,再遇到类似报错,排查起来就会快很多。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/200721