Mac 10.11安装MySQLdb-python时报错总结

前言

===

其实以前遇到过这些坑,费了n久解决了以后,实在是心累,不想总结。当时心想,现在配好这个环境,以后再也不弄这个了!!

然鹅,是我图样图森破了,这美好的乌托邦环境在一次电脑抽风,只能重装以后就木有了!心好累~

错误

===

下面开始我们的错误之旅~

1、mysql_config not found

===

按照套路步骤,首先在这https://sourceforge.net/projects/mysql-python/files/找到你喜欢的下载包。我安装的是1.2.3版本的,地址MySQL-python-1.2.3.tar.gz。

下载完成以后解压。把解压后的文件拷贝到 /usr/local/目录下。如果需要鉴定在鉴定里输入电脑密码。
打开终端cd到目录下。

编辑个人家目录下的bash_profile文件(当然也可以直接在终端执行这几句话,效果相同)

vi ~/.bash_profile

在文件中添加下面几句:

export PATH=/usr/local/mysql-5.7.16-osx10.11-x86_64/bin:${PATH}
export DYLD_LIBRARY_PATH=/usr/local/mysql-5.7.16-osx10.11-x86_64/lib/
export VERSIONER_PYTHON_PREFER_64_BIT=yes 
export VERSIONER_PYTHON_PREFER_32_BIT=no

这里需要注意的是/usr/local/mysql-5.7.16-osx10.11-x86_64/lib/目录要如果与你的目录不同时需要修改为你自己的mysql目录。

如果是vi命令编辑的话按i进行编辑,编辑完成以后按esc按钮退出编辑模式,用:wq保存并退出。

两种添加方式都需要执行以下命令保证刚才的修改生效:

source ~/.bash_profile

然后执行命令:

python setup.py build

如果提示

Operation not permitted

则需要使用sudo权限,在命令前面加sudo(下面所有命令同理),即:

sudo python setup.py build

然后就会遇到第一个问题:

mysql_config not found

在刚拷贝的MySQL-python目录下找到setup_posix.py文件,打开后进行修改:

原值为 mysql_config.path = "mysql_config"

需要修改为你自己的实际路径。例如我的:

mysql_config.path = "/usr/local/mysql-5.7.16-osx10.11-x86_64/bin/mysql_config"

保存后重新执行命令,然后你可能会得到第二个错。

2、错误太长了,不贴了,去下面找~~

===

第二个错:

Error loading MySQLdb module: dlopen(/Users/showhilllee/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.11-intel.egg-tmp/_mysql.so, 2): Library not loaded: /usr/local/mysql/lib/libmysqlclient.20.dylib
Referenced from: /Users/showhilllee/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.11-intel.egg-tmp/_mysql.so
Reason: image not found

错误提示很明显,建立一个软链就可以了。恩,至少我一开始是这么想的,然鹅事实证明我还是图样。建立软链接命令:

sudo ln -s /usr/local/mysql-5.7.16-osx10.11-x86_64/lib/libmysqlclient.20.dylib /usr/lib/libmysqlclient.20.dylib

还是注意要把路径修改为你自己的。这里唠叨一句libmysqlclient.20.dylib名字中间的数字可能会由于下载的版本号不同而不同。请根据自己第实际报错来修改命令。

图样的原因来了,是El Capitan加入了Rootless机制,不再允许随心所欲的读写很多路径了。及时设置root权限也不行,还是会收到Operation not permitted的错误!

注:Rootless机制将成为对抗恶意程序的最后防线

虽然是最后一道防线,但是不先关掉Rootless我们的问题是不能解决的。

解决办法是重启电脑,启动后按住Command+R,进入恢复模式,打开Terminal,执行关闭命令:

csrutil disable

重启即可。如果要重新打开Rootless恢复到默认,在恢复模式中执行以下命令:

csrutil enable

关掉Rootless以后再执行添加软连接命令即可成功。

3、ImportError: No module named _mysql

===

写到这里其实已经记不清都有啥错误了,解决对应的方法也只能是看执行命令的记录和报错来回忆这个心累的过程。。。

这个报错也是添加软连接解决

ln -s /usr/local/mysql-5.7.16-osx10.11-x86_64/bin/mysql /usr/bin

而且,从链接目录也能看出来,这个命令也是需要关闭Rootless的。

4、不负责任的结尾

===

其他的错误真的记不清了。。。

如果你在执行上面步骤的时候,感觉可能没问题了,可以执行一下下面的命令来检测一下是不是真的可以了。如果没有报错了的话那么恭喜你成功了!

python -c "import MySQLdb"

如果确实没有问题了,那么还是在MySQL-python那个目录下分别执行以下命令:

python setup.py clean
python setup.py build
sudo python setup.py install

最后一次啰嗦:在build的时候,可能会有一些waring,只要不是error就可以先忽略 and 上面几个命令如果权限被拒绝自行添加sudo。

5、要不要这个结尾呢

===

最后,Have a fun.

==

The End.

你可能感兴趣的:(python)