Mac 下使用Python 连接Mysql 数据库,使用到模块MySQLdb,各种问题都出现,搜集整理下,最后发现最关键的还是Mac 下的Python 版本问题
前置条件:
1. 已经安装mysql 数据库,并且配置环境变量
建议使用:
sudo ln -s /usr/local/mysql/bin/* /usr/bin
这样建立软链接,可以快速访问
2. 确定Python 版本,下载对应的MySQLdb
3. 安装Gcc
4. 配置环境变量如下:
(添加Mysql 的路径,Mysql lib,Python 路径,Python 用多少位运行)
export PATH=$PATH:/usr/local/mysql/bin
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib
export PYTHON_HOME=$PATH:System/Library/Frameworks/Python.framework/Versions/2.7/bin
export VERSIONER_PYTHON_PREFER_32_BIT=yes
export VERSIONER_PYTHON_PREFER_64_BIT=yes
安装步骤:
1. 下载对应的MySQLdb 文件
http://sourceforge.net/projects/mysql-python/
2. 解压文件,修改里面site.cfg
找到 #mysql_config = /usr/local/bin/mysql_config
井号去掉,并且修改自己的路径 mysql_config = /usr/local/mysql/bin/mysql_config
3. 打开命令行终端cd 到 刚才的解压目录
python setup.py clean
python setup.py build
python setup.py install
执行之后就会提示安装成功了,之后推出命令行,试试 import MySQLdb 看看是否成功,即可
安装过程出现的问题:
ImportError: dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
解决办法(建立一个软连接):
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
ImportError:dlopen(/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so,2):nosuitable image found.Didfind:/Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.8-intel.egg/_mysql.so:mach-o,but wrong architecture
解决办法:
检查mysql 是否是64 位的,Python 是否是64 位的模式
检查mac是否存在多个版本的Python,因为在安装MySQLdb 需要clean,build,install,
在 build 的过程中,可能会出现是build 的版本,与导入包的版本不一致 ,所以导致问题
Ps:
如果上述的方法都不行的话,请检查你的Python 是否是
System/Library/Frameworks/Python.framework/Versions/2.7/bin ,只有python 是System/Library 这个目录下的python ,才可以编译通过
另外python 建议使用32版本的,这样可以兼容更多的模块