Ubuntu下Spyder运行代码遇MySQLdb与_mysql版本不匹配问题求助
解决Ubuntu Spyder中MySQLdb与_mysql版本不匹配问题
我来帮你搞定这个版本冲突的麻烦!你遇到的问题本质是MySQL-python(也就是MySQLdb)已经停止维护,它的旧版本和Ubuntu系统自带的_mysql C扩展版本不兼容,而且两者确实没有重叠的可用版本,所以直接硬凑版本是行不通的。给你两个靠谱的解决方案:
方案1:改用维护活跃的mysqlclient(推荐)
mysqlclient是MySQL-python的官方分支,一直在更新,能自动适配系统的_mysql版本,步骤如下:
彻底清理所有残留的MySQL相关包:
# 卸载pip里的相关包 pip uninstall -y MySQL-python mysqlclient # 清理系统级的旧包(如果是Python3就把python改成python3) sudo apt-get purge -y python-mysqldb libmysqlclient-dev # 清空pip缓存避免残留 pip cache purge安装系统依赖(编译mysqlclient需要):
sudo apt-get install -y python3-dev default-libmysqlclient-dev build-essential(如果用的是Python2,把
python3-dev换成python-dev)安装mysqlclient:
# Python3用pip3,Python2用pip pip3 install mysqlclient这个版本会自动匹配系统的
_mysql,不会再出现版本不匹配的错误。
方案2:用PyMySQL完全替代(无C扩展问题)
如果不想折腾编译依赖,PyMySQL是纯Python实现的MySQL客户端,完全兼容MySQLdb的API,不会有C扩展版本冲突的问题:
同样先清理所有旧包(和方案1的第一步一样)
安装PyMySQL:
pip3 install pymysql在你的Python代码开头加上这两行,让PyMySQL伪装成MySQLdb:
import pymysql pymysql.install_as_MySQLdb()之后你原来的
import MySQLdb代码可以完全不用改,直接运行就行。
为什么你之前的方法没用?
MySQL-python已经多年没更新了,最新版本还是1.2.5,而Ubuntu系统自带的_mysql是更新的1.4.6版本,两者没有兼容的重叠版本。要么用适配系统的mysqlclient,要么用纯Python的PyMySQL绕开C扩展的问题,这两个方法都比硬凑版本靠谱得多。
内容的提问来源于stack exchange,提问作者Horro
相关产品推荐
相关产品推荐

