在Windows上的python3.3安装MySQLdb的故事

在Windows平台上安装python还算可以,但是安装MySQLdb就麻烦多了,如果碰巧你跟我一样用的是python 3.3那就更是折腾了。

到本文发布的时候,mysql-python官方还没有发布支持python 3 的版本。最新版本是支持 python 2.7 的 1.2.4b4 (http://sourceforge.net/projects/mysql-python

所以折腾了我一下午,好好的周日就光玩这个了,趁着还记得赶紧记下来。

操作系统: Windows 8
python:python 3.3.1 (最好是32位)

首先需要下载安装如下软件

MinGW http://sourceforge.net/projects/mingw/files/

  1. 安装MinGW
  2. 设置系统环境变量path,添加“D:\MinGW\bin”到path中
  3. 打开D:\python\Lib\distutils\cygwinccompiler.py 搜索“-mno-cygwin” 将其删除,否则一会儿会报“unrecognized command line option ‘-mno-cygwin’”这个错误

注:如果不想修改python系统文件也可以下载较早版本的MinGW(例如 http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20110530/

MySQL Connector/C 6.0.2(32位) http://dev.mysql.com/downloads/connector/c/

  1. 安装Connector/C
  2. 打开“C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\include\config-win.h” 搜索ssize_t和mode_t,将有它们两个的行注释起来
  3. 把C:\Program Files (x86)\MySQL\MySQL Connector C 6.0.2\lib\opt\libmysql.dll复制到Windows的System32目录 复制到D:\python\Lib\site-packages即可

MySQLdb-1.3
https://github.com/farcepest/MySQLdb1/tree/MySQLdb-1.3

打开在setup.cfg,在其中加入:

[code lang=”python”]
[build]
compiler = mingw32
[/code]

就是让系统使用Mingw编译而不使用本机的VC 2010编译
打开setup_windows.py,将

[code lang=”python”]
libraries = [ ‘kernel32’, ‘advapi32’, ‘wsock32’, client ]
[/code]

修改为

[code lang=”python”]
libraries = [ ‘kernel32’, ‘advapi32’, ‘wsock32′,’libmysql’ ]
[/code]

[code lang=”python”]extra_compile_args = [ ‘/ZL’ ][/code]

修改为

[code lang=”python”]extra_compile_args = [ ” ][/code]

用python执行python setup.py build
如果成功则继续执行python setup.py install
完成后进入D:\python\Lib\site-packages,将新生成的文件夹,名字贼长那个改为“MySQLdb”

进入python命令行执行import MySQLdb,检查是否有错误

经过以上步骤终于可以在Windows平台上安装支持 python 3 的 mysql-python 了

感谢以下文章,启发甚大:
http://blog.csdn.net/zuoniu/article/details/7929213
http://hi.baidu.com/cenxcen/item/131f8608db97071eeafe38b8