【已解决】解决 ModuleNotFoundError: No module named 'exceptions'
文章目录
- [【已解决】解决 ModuleNotFoundError: No module named 'exceptions'](#【已解决】解决 ModuleNotFoundError: No module named 'exceptions')
-
- [1 问题描述](#1 问题描述)
- [2 解决方法](#2 解决方法)
-
- [2.1 卸载错误的模块](#2.1 卸载错误的模块)
- [2.2 安装正确的模块](#2.2 安装正确的模块)
- [3 为什么会出现这个问题?](#3 为什么会出现这个问题?)
-
- [1️⃣ 包名和模块名可以不同](#1️⃣ 包名和模块名可以不同)
- [2️⃣ 一个 pip 包可以包含多个模块](#2️⃣ 一个 pip 包可以包含多个模块)
- [3️⃣ 有些库历史原因改名](#3️⃣ 有些库历史原因改名)
- [4️⃣ pip 包里面嵌套子模块](#4️⃣ pip 包里面嵌套子模块)
- [4 所以如何知道应该 install 什么?](#4 所以如何知道应该 install 什么?)
-
- 方法1:google
- [方法2:用 pip search(旧方法)](#方法2:用 pip search(旧方法))
- 方法3:看官方文档
- 🔥一个很实用的网站
- [5 总结](#5 总结)
1 问题描述
当你在使用 Python 时遇到 ModuleNotFoundError: No module named 'exceptions' 错误,这通常是因为你安装了错误的模块。
出现这个报错最常见的情形是:
python
from docx import Document
运行时出现错误:
bash
ModuleNotFoundError: No module named 'exceptions'
2 解决方法
2.1 卸载错误的模块
首先,卸载错误的 docx 模块。
bash
pip uninstall docx
2.2 安装正确的模块
然后,安装正确的 python-docx 模块。
bash
pip install python-docx
按照上述步骤重新正确安装后,应该能够解决 ModuleNotFoundError: No module named 'exceptions' 错误,并成功运行代码。
3 为什么会出现这个问题?
出现这个报错肯定是看到代码中有
python
from docx import Document
所以就直接这样安装了:
bash
pip install docx
但是请注意!
pip install 安装的是 distribution package(发布包名) ,而 import 用的是 module / package name(模块名) 。二者不一定相同。
关于模块名与 Python import 用法的相关内容,可以看我之前的这一篇文章中的相关介绍:【一文搞懂】万字长文带你彻底理解 Python 的 import 导入机制 与 if name == "main": main() 的原理与作用 。
Python 里 import 的名字和 pip install 的包名不一定一样,原因主要有几个:
1️⃣ 包名和模块名可以不同
pip install 安装的是 distribution package(发布包名) ,
而 import 用的是 module / package name(模块名)。
开发者可以随意设置这两个名字。
例如:
bash
pip install pillow
但是代码里要写:
python
import PIL
因为 Pillow 发布包里提供的模块叫 PIL。
2️⃣ 一个 pip 包可以包含多个模块
有些库安装一个包,会提供很多模块。
例如:
bash
pip install scikit-learn
代码:
python
import sklearn
这里:
| pip install | import |
|---|---|
| scikit-learn | sklearn |
3️⃣ 有些库历史原因改名
很多库有历史包名。
例如:
| pip install | import |
|---|---|
| opencv-python | cv2 |
| beautifulsoup4 | bs4 |
| python-dateutil | dateutil |
代码:
python
pip install beautifulsoup4
python
from bs4 import BeautifulSoup
4️⃣ pip 包里面嵌套子模块
很多库是 父包 + 子模块。
例如:
bash
pip install matplotlib
代码:
python
import matplotlib.pyplot as plt
这里:
matplotlib
└── pyplot
4 所以如何知道应该 install 什么?
如果看到代码:
python
import cv2
你不知道安装什么,可以:
方法1:google
pip install cv2
通常会告诉你:
pip install opencv-python
方法2:用 pip search(旧方法)
现在常用:
bash
pip install pip_search
pip_search cv2
方法3:看官方文档
🔥一个很实用的网站
推荐这个:
https://pypi.org
搜索模块名。
5 总结
大部分情况
pip install 包名
import 包名
但下面这些经常不同:
| pip install | import |
|---|---|
| pillow | PIL |
| opencv-python | cv2 |
| beautifulsoup4 | bs4 |
| scikit-learn | sklearn |
| python-dateutil | dateutil |
💡所以建议 pip install 之前先查一查这个模块名对应的发布包名的名称是什么,避免安装出错。