如何解决prettytable包引发的ModuleNotFoundError问题?
问题解决:ModuleNotFoundError: No module named 'email.message'; 'email' is not a package
问题重现
运行代码:
from prettytable import PrettyTable table = PrettyTable() print(table)
触发报错:
Traceback (most recent call last): File "e:\PROJECTS\newwww.py", line 1, in <module> from prettytable import PrettyTable File "E:\PROJECTS\myvenv\Lib\site-packages\prettytable\__init__.py", line 47, in <module> import importlib.metadata File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\importlib\metadata\__init__.py", line 17, in <module> from . import _adapters, _meta File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1264.0_x64__qbz5n2kfra8p0\Lib\importlib\metadata\_adapters.py", line 3, in <module> import email.message ModuleNotFoundError: No module named 'email.message'; 'email' is not a package
多次重装prettytable无效。
原因分析
这个错误和prettytable本身无关,是项目目录中存在与Python标准库email包同名的文件/目录,导致Python优先加载了自定义的email文件,而非标准库的内置包,进而找不到email.message模块。
解决方案
排查同名文件/目录
检查项目根目录(e:\PROJECTS\)下是否存在email.py文件或email文件夹,若有,立即重命名(例如改为my_email_utils.py或custom_email_dir),避免与标准库冲突。清理缓存文件
删除项目目录下的__pycache__文件夹,清除Python编译缓存后重新运行代码。重建虚拟环境
若上述方法无效,尝试重置虚拟环境:- 删除现有虚拟环境:
rmdir /s E:\PROJECTS\myvenv(Windows命令行) - 重新创建虚拟环境:
python -m venv myvenv - 激活虚拟环境:
myvenv\Scripts\activate - 重新安装
prettytable:pip install prettytable - 再次运行测试代码
- 删除现有虚拟环境:
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

