刚开始学 Python,很多人都见过这行红字:
ModuleNotFoundError: No module named 'requests'
第一反应往往是:“是不是Python没装好?”
其实,ModuleNotFoundError 的意思很直接:Python在当前环境和搜索路径里,没有找到你要导入的模块。
与其反复重装,不如按照下面6种情况逐个排查。
一、模块名拼错了
这是最简单,也最容易忽略的问题。
比如:
正确应该是:
模块名、大小写、下划线写错,都可能导致导入失败。所以看到报错后,第一步先检查 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)
再执行:
重点看两边显示的路径是否对应。
四、虚拟环境没有激活
假设你把requests安装到了项目的 .venv 中,下次打开终端却忘记激活,也可能导致环境不一致。
Windows:
macOS/Linux:
source .venv/bin/activate
激活后,终端前面通常会出现:
再运行项目试试。
五、自己写的模块路径不对
如果导入的是自己写的文件,例如:
项目结构却是:
my_project/├── main.py└── utils/ └── calculator.py
那就不能想当然地直接 import calculator。
如果 utils 按包来组织,可以根据项目结构写成:
from utils import calculator
遇到这种情况,不要看到ModuleNotFoundError就去pip安装。先分清楚:你导入的是第三方库,还是自己项目里的模块。
六、文件名和第三方库“撞名”了
还有一个比较隐蔽的问题:自己创建的Python文件与第三方库或标准库重名。
例如项目里自己写了:
代码中又:
Python可能优先找到你自己的 requests.py,进而产生导入异常或循环导入等问题。
因此项目文件尽量不要随便取 requests.py、json.py、random.py 这类容易与已有模块冲突的名字。
写在最后
以后再碰到:
先别急着重装Python。
按照这个顺序检查:
名称有没有写错 → 包有没有安装 → Python解释器对不对 → 虚拟环境有没有激活 → 项目路径是否正确 → 文件有没有重名。
很多Python环境问题,真正难的不是“怎么修”,而是先搞清楚代码到底运行在哪个Python环境里。
把模块、pip、虚拟环境和解释器之间的关系理顺之后,再遇到类似报错,排查起来就会快很多。