安装MySQL-python后运行Django项目报错:MySQLdb与_mysql版本不匹配
解决MySQLdb与_mysql版本不匹配的问题
这坑我之前踩过!本质是你的Python环境里混了新旧两个版本的MySQL相关库:虽然pip freeze显示MySQL-python==1.2.5(也就是上层的MySQLdb是1.2.5),但底层的_mysql C扩展模块还是旧的1.2.3版本,导致Django加载时版本校验失败。下面是几个亲测有效的解决步骤:
步骤1:彻底卸载并清理旧库
首先完全移除已安装的MySQL-python,同时手动清理残留的底层_mysql文件:
- 执行卸载命令:
pip uninstall -y MySQL-python - 找到
_mysql模块的位置并删除:
如果还能导入_mysql,可以用以下命令直接定位路径:
然后删除输出的文件(比如Linux/macOS下是python -c "import os; import _mysql; print(os.path.abspath(_mysql.__file__))"_mysql.so,Windows下是_mysql.pyd)。如果导入失败,就去你的Python环境的site-packages目录里手动找这个文件删掉。
步骤2:清理pip缓存后重新安装指定版本
pip缓存可能保留了旧版本的安装包,导致重新安装时还是用旧的底层文件:
- 清理pip全局缓存:
pip cache purge - 重新安装1.2.5版本:
pip install MySQL-python==1.2.5
步骤3:检查虚拟环境(如果使用了的话)
如果你的项目用了虚拟环境,务必确认当前激活的是正确的环境:
- 用以下命令确认当前Python路径:
# Linux/macOS which python # Windows where python - 再执行
pip freeze,确保这个环境里的MySQL-python确实是1.2.5版本,没有被全局环境的旧库干扰。
备选方案:换用维护更活跃的mysqlclient
MySQL-python已经多年没更新了,兼容性问题较多。Django官方现在推荐使用mysqlclient(它是MySQL-python的分支,完全兼容Django的MySQL引擎):
- 卸载旧的MySQL-python后,安装mysqlclient:
pip install mysqlclient - 无需修改Django的数据库配置(
DATABASES里的ENGINE还是'django.db.backends.mysql'),直接重启项目即可。
内容的提问来源于stack exchange,提问作者Saurabh Singh
相关产品推荐
相关产品推荐

