这两天要使用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
如果不报错,就说明安装成功了。