linux(Cent OS)安装python MySQLdb

这两天要使用python,在cent os上安装MySQLdb时爆出各种问题,

安装步骤

在服务器安装了mysql 或者mysql-connect的前提下

1、安装setuptools

2、安装mysql-python

问题列举:

  • No module named setuptools
    *原因:
    没有安装setuptools工具
    *解决方案:
    在python官网https://pypi.python.org搜 setuptools工具,复制工具连接,然后如下操作
wget https://pypi.python.org/packages/6b/dd/a7de8caeeffab76bacf56972b3f090c12e0ae6932245abbce706690a6436/setuptools-2#md5=a46750b6bd90a1343466bd57b0e2721a
tar -zxvf setuptools-28.3.0.tar.gz
python setup.py build
python setup.py install
  • mysql_config找不到
    *原因:
    mysql_config 找不到,是因为在setup_posix.py文件中调用了mysql_config。而改参数的设置的值在site.cfg中。打开 site.cfg 发现结果是linux的mysq_config 被注释掉了。所以只要将系统的mysql_config 注释去掉,并且后面的路径改成自己系统的mysql的mysql_config路径
    *解决方案:
    找到mysql_config
    find / -name "*mysql_config*"
    修改site.cfg
  • unable to execute gcc: No such file or directory
    *原因:
    由于gcc工具没有安装导致无法使用gcc工具编译
    *解决方案:
yum install gcc -y
  • /usr/bin/ld: cannot find -lmysqlclient_r(或者-lmysqlclient)
  • *原因
    这个可以看出是找不到mysqlclient_r文件或函数; 从gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/_mysql.o -L/usr/lib64 -L/usr/lib64 可以得到gcc在/usr/lib64 路径下找mysqlclient_r,但是找不到。
    *解决方法:(copy文件到/usr/lib64/路径下):
    cp /usr/lib64/mysql/libmysqlclient_r.a /usr/lib64/
    最后再编译,安装

  • ImportError: /root/.cache/Python-Eggs/MySQL_python-1.2.3-py2.7-linux-x86_64.egg-tmp/_mysql.so: undefined symbol: __cxa_pure_virtual
    *原因:
    mysql和mysql_pythony用的编译器不一致,一个用g++,一个用gcc…
    *解决方案:
    将安装过程中的

gcc -pthread -shared ./temp.linux-x86_64-2.6/_mysql.o -L/usr/lib64 -L/usr/lib64 -lmysqlcl ient -lpthread -lm -lrt -ldl -lpython2.6 -o ./lib.linux-x86_64-2.6/_mysql.so

gcc编译改成g++ (如果没有g++,需要先安装yum install -y gcc-c++),即:

g++ -pthread -shared ./temp.linux-x86_64-2.6/_mysql.o -L/usr/lib64 -L/usr/lib64 -lmysqlcl ient -lpthread -lm -lrt -ldl -lpython2.6 -o ./lib.linux-x86_64-2.6/_mysql.so

重新编译安装。

验证安装成功

//输入python命令,回车
python
//显示python交互命令行
>>>
//输入以下内容,回车
import MySQLdb

如果不报错,就说明安装成功了。

图文查看:https://my.oschina.net/jywm/blog/757973

你可能感兴趣的:(Linux)