linux python 安装MySQLdb
Posted wingooom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux python 安装MySQLdb相关的知识,希望对你有一定的参考价值。
每次安装python的mysqldb模块都贼费劲,这次把一些要点记下来。
Centos6已经安装了mysql,mysql命令本身是好使的。但是每次安装python的MySQLdb模块都有问题。而且yum每次都因为python版本问题不能使用
安装MySQLdb模块
1、下载MySQL-python-1.2.3.tar.gz
# tar -zxvf MySQL-python-1.2.3.tar.gz
# cd MySQL-python-1.2.3
2、修改site.cfg
mysql_config = /usr/local/mysql/bin/mysql_config
若跳过第三步,直接编译运行,则在导入MySQLdb时会报错
ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory
解决办法就是第三步
3、libmysqlclient
查找 libmysqlclient(因为机器已经装过mysql),可能会存在两个,一个32位一个64位的,后面创建软连接时可以两个都试下,肯定有一个位数能对应上。
# find / -name libmysqlclient*
...
/usr/local/mysql/lib/mysql/libmysqlclient_r.so.15
/usr/local/mysql/lib/libmysqlclient_r.so.15
...
# ll /usr/local/mysql/lib/mysql/libmysqlclient_r.so.15
/usr/local/mysql/lib/mysql/libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0
# ll /usr/local/mysql/lib/libmysqlclient_r.so.15
/usr/local/mysql/lib/libmysqlclient_r.so.15 -> libmysqlclient_r.so
创建软连接
ln -s /usr/local/mysql/lib/libmysqlclient_r.so /usr/lib64/libmysqlclient_r.so.15
根据32位或64位,软连接到/usr/lib/ 或/usr/lib64/目录
若是位数不对应,会报错:
ImportError: libmysqlclient_r.so.15: wrong ELF class: ELFCLASS32
重新创建新的软连接,找到对应的版本就好了
4、编译安装
# python setup.py build
# python setup.py install
5、测试
# python
>>> import MySQLdb
>>>
完美!!
若是报错警告
UserWarning: Module _mysql was already imported from
则,换个目录执行python命令就行
问题
在apache上部署了flask的web框架,结果在导入我自己的mysql封装类的时候,居然报错。
问题一
[Wed Apr 18 20:39:18 2018] [error] [client 10.40.101.37] ExtractionError: Can't extract file(s) to egg cache, referer:
....
[Errno 13] Permission denied: '/root/.cache',
将目录/root/.cache权限设置为777,依然不好使。
解决
把egg格式转成目录
# cd /python-path/site-packages/
# mv MySQL_python-1.2.3-py2.7-linux-x86_64.egg foo.zip
# mkdir MySQL_python-1.2.3-py2.7-linux-x86_64.egg
# cd MySQL_python-1.2.3-py2.7-linux-x86_64.egg
# unzip ../foo.zip
# rm ../foo.zip
结果,好使!
以上是关于linux python 安装MySQLdb的主要内容,如果未能解决你的问题,请参考以下文章