===
其实以前遇到过这些坑,费了n久解决了以后,实在是心累,不想总结。当时心想,现在配好这个环境,以后再也不弄这个了!!
然鹅,是我图样图森破了,这美好的乌托邦环境在一次电脑抽风,只能重装以后就木有了!心好累~
===
下面开始我们的错误之旅~
===
按照套路步骤,首先在这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"
保存后重新执行命令,然后你可能会得到第二个错。
===
第二个错:
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以后再执行添加软连接命令即可成功。
===
写到这里其实已经记不清都有啥错误了,解决对应的方法也只能是看执行命令的记录和报错来回忆这个心累的过程。。。
这个报错也是添加软连接解决
ln -s /usr/local/mysql-5.7.16-osx10.11-x86_64/bin/mysql /usr/bin
而且,从链接目录也能看出来,这个命令也是需要关闭Rootless的。
===
其他的错误真的记不清了。。。
如果你在执行上面步骤的时候,感觉可能没问题了,可以执行一下下面的命令来检测一下是不是真的可以了。如果没有报错了的话那么恭喜你成功了!
python -c "import MySQLdb"
如果确实没有问题了,那么还是在MySQL-python那个目录下分别执行以下命令:
python setup.py clean
python setup.py build
sudo python setup.py install
最后一次啰嗦:在build的时候,可能会有一些waring,只要不是error就可以先忽略 and 上面几个命令如果权限被拒绝自行添加sudo。
===
最后,Have a fun.
==
The End.