运行discord机器人报ModuleNotFoundError: No module named 'discord'及Python版本切换问题
报错原因
首先纠正常见认知误区:官方维护的最新版discord.py完全兼容Python 3.8及以上所有稳定版本,该类报错基本由以下两类问题导致:
- 误装PyPI平台同名废弃
discord库:该库2021年起停止维护,仅适配Python 3.7及更低版本,高版本Python环境下安装后导入会直接抛出ModuleNotFoundError - Python解释器与pip环境不匹配:安装库时调用的pip对应其他Python版本,运行代码时调用的是当前最新版Python,后者环境下未安装discord.py
不影响现有最新版Python的处理方案
方案一:修复当前环境(无需切换Python版本,优先尝试)
- 先卸载所有错误安装的相关库:
pip uninstall discord discord.py -y
- 显式指定运行代码的Python解释器来安装官方discord.py:
若运行代码使用python命令,执行:
python -m pip install discord.py
若运行代码使用python3命令,执行:
python3 -m pip install discord.py
安装完成后直接导入测试即可,该方法可解决90%以上同类报错。
方案二:确需使用旧版本Python的处理方法(如兼容discord.py废弃功能)
使用版本隔离工具管理多版本Python,完全不影响系统默认的最新版Python:
Windows系统
下载对应旧版本Python安装包,安装时取消勾选「Add Python to PATH」,后续在项目内通过虚拟环境调用即可:
- 进入项目目录后,指定旧版本Python路径创建虚拟环境(示例为Python 3.7默认安装路径):
C:\Users\系统用户名\AppData\Local\Programs\Python\Python37\python.exe -m venv bot_env
- 激活虚拟环境:
bot_env\Scripts\activate
虚拟环境激活后,所有pip安装、代码运行操作均使用对应旧版本Python,退出虚拟环境后恢复为系统默认最新版。
macOS/Linux系统
使用pyenv管理多版本Python:
- 安装pyenv后执行命令安装需要的旧版本,示例为Python 3.7.16:
pyenv install 3.7.16
- 进入机器人项目目录,指定该目录本地Python版本:
cd 你的项目路径 pyenv local 3.7.16
该目录下执行所有Python相关命令都会自动调用指定的旧版本,其他目录仍使用系统默认最新版,完全互不干扰。
内容的提问来源于stack exchange,提问作者the parrot97
相关产品推荐
相关产品推荐

