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)