在OSX系统为Python 2.7安装MySQLdb时出现IndexError求助
解决Python 2.7安装MySQLdb时的IndexError问题
这个错误本质是setup_posix.py里的dequote函数在处理空字符串时没有做前置判断,直接去取字符串首尾索引导致的IndexError。背后的原因通常是MySQL开发库的配置参数异常,或者系统里的MySQL依赖没安装到位,给你几个可行的解决思路:
先确认MySQL开发依赖是否安装完整
如果你是macOS用户,最方便的方式是用Homebrew安装MySQL的开发包:brew install mysql-connector-c安装完成后,在终端运行
mysql_config --libs,看看输出里有没有类似-l后面空着的无效参数——如果有,那就是导致空字符串的根源,重新安装对应版本的MySQL开发库就能解决。手动修复
setup_posix.py的bug
找到你下载的MySQL-python包里的setup_posix.py文件,定位到dequote函数,修改成下面的代码,给空字符串加个判断:def dequote(s): if not s: # 先判断字符串是否为空 return s if s[0] in "\"'" and s[0] == s[-1]: return s[1:-1] return s修改后再运行
python setup.py install,应该就能跳过这个错误了。指定
mysql_config的路径
如果你的mysql_config不在系统默认的PATH里,运行安装命令时手动指定它的路径:python setup.py build --mysql-config=/usr/local/mysql/bin/mysql_config或者先设置环境变量再安装:
export MYSQL_CONFIG=/usr/local/mysql/bin/mysql_config python setup.py install考虑用替代包(更省心)
因为Python 2.7已经停止维护了,MySQLdb的旧版本bug也比较多,你可以试试安装mysqlclient的兼容版本(它是MySQLdb的分支,支持Python2.7):pip install mysqlclient==1.4.6这个包的安装流程更顺畅,通常不会出现这类配置问题。
内容的提问来源于stack exchange,提问作者Haazy
相关产品推荐
相关产品推荐

