安装环境:OS X操作系统,Python 2.7.3。
MySQLdb其实包含在MySQL-python包中,因此无论下载还是在pip中search,都应该是搜寻MySQL-python。
以下将说明MySQLdb两种常见的安装方式,下载安装或者pip安装MySQL-python。
下载MySQLdb
在SourceForge可以下载MySQL-python-1.2.4b4.tar,下载后解压,然后在终端Terminal中执行以下命令:
new-host-3:~ iFantastic$ cd /Users/iFantastic/Downloads/MySQL-python-1.2.4b4
new-host-3:MySQL-python-1.2.4b4 iFantastic$ python setup.py install
使用pip安装MySQLdb
在终端中执行:
new-host-3:~ iFantastic$ pip install MySQL-python
无论是在线安装还是下载安装,此时你可能会遇到第一个错误提示:
EnvironmentError: mysql_config not found
建议使用pip安装,因为我从sourceforge下载的版本居然不如pip中的新。如果想要升级mysql-python版本,可以使用以下命令:
$ easy_install MySQL-python --upgrade
[注意]如果你没有按照下文解决安装中的错误提示,那么升级也会因为同样的错误原因而失败。
解决mysql_config not found错误
在默认方式安装Mac版MySql时,会在/usr/local/mysql/bin目录下生成mysql_config文件。
因此下载安装时的解决办法为:在MySQL-python的安装包中找到site.cfg文件,打开它,找到以下内容:
The path to mysql_config.
Only use this if mysql_config is not on your PATH, or you have some weird
setup that requires it.
mysql_config = /usr/local/bin/mysql_config
将最后一句句首井号去掉,并修改为:
mysql_config = /usr/local/mysql/bin/mysql_config
然后执行:
$ python setup.py install
一般说来,此时安装可以完成,但仍有问题,下文会继续阐述。
使用pip安装时没有办法修改site.cfg文件,因此可以通过修改OS X的系统环境变量来解决找不到mysql_config的错误。
修改OS X环境变量:打开终端,在终端中使用vim打开“~/.bash_profile”,如果没有安装vim,那就显示隐藏文件用文本编辑器打开,具体操作这里就不复述了。在.bash_profile中添加以下内容:
PATH="/usr/local/mysql/bin:${PATH}"
export PATH
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/
export VERSIONER_PYTHON_PREFER_64_BIT=no
export VERSIONER_PYTHON_PREFER_32_BIT=yes
其中 VERSIONER_PYTHON_PREFER_64_BIT和VERSIONER_PYTHON_PREFER_64_BIT根据自己安装的MySQL进行选择。
解决mac _mysql.c:44:10: fatal error: ‘my_config.h‘ file not found
环境:
mac os:10.15.4
mysql:8.0.19 通过Homebrew命令安装
MySQL-python: 1.2.5
pip install MySQL-python
......
running build_ext
building 'mysql' extension
creating build/temp.macosx-10.15-x86_64-2.7
cc -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -iwithsysroot /usr/local/libressl/include -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -I/usr/local/opt/openssl@1.1/include -arch x86_64 -pipe -Dversion_info=(1,2,5,'final',1) -D__version_=1.2.5 -I/usr/local/Cellar/mysql/8.0.19_1/include/mysql -I/Users/zhangli53/.virtualenvs/mega/include/python2.7 -c _mysql.c -o build/temp.macosx-10.15-x86_64-2.7/_mysql.o
_mysql.c:44:10: fatal error: 'my_config.h' file not found
include "my_config.h"
^~~~~~~~~~~~~
1 error generated.
error: command 'cc' failed with exit status 1
ERROR: Failed building wheel for MySQL-python
要安装MySQL-python 包,报错如上,找不到my_config.h文件,那么我就在本电脑上找一下这个文件吧
find / -name "my_config.h"
1
结果是没有这个文件,那么问题就很明显了,去哪找这个头文件?
我在本地电脑查mysql的安装目录,最后发现目录 /usr/local/include/mysql 下有个 mysql.h 文件,这个就应该是我们要找的my_config.h 文件了吧,cp mysql.h my_config.h ,再次 pip install MySQL-python 就已经安装成功了!!!
我还在想如果这个文件不对,去别个环境拷一个my_config.h 文件过来,安装一下试试呢,结果就成功了。
我觉得 这个锅应该是新版的mysql来背,文件名瞎改啥? MySQL-python 包也应该更新一下,做个兼容。