最近,朋友们常提起python。既然大家都觉得它好,而且之前我在linux下安装google的goagent代理的时候,出现过python的错误,我也自己想学习一下,理解一下它是如何处理解决问题的。python的环境,在linux下是安装好的。那么,为了能让python操作数据库,我按照网上的方法安装MySQLdb。
服务器:centos 6.3
数据库:mysql 5.6采用rpm方式安装
MySQL-client-5.6.16-1.el6.x86_64.rpm
MySQL-server-5.6.16-1.el6.x86_64.rpm
下载软件:
wget http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz
$ tar xfz MySQL-python-1.2.3.tar.gz $ cd MySQL-python-1.2.3 $ # edit site.cfg if necessary $ python setup.py build $ sudo python setup.py install # or su first
问题解决
按照官方给的步骤,进行安装,出现了几个问题。
1. ImportError: No module named setuptools
解决方法:yum install python-setuptools
2. EnvironmentError: mysql_config not found
解决方法:需要安装MySQL-devel-5.6.16-1.el6.x86_64.rpm
(注:查看当前安装的mysql信息,或者find / -name mysql_config,查看是否存在对应命令。没有需要安装对应的mysql-devel。)
3. /usr/bin/ld: cannot find -lmysqlclient_r
解决方法:mysql-python的目录下site.cfg 的 threadsafe = True 改为 False。就可以安装,的确如此。再看看 mysql 源码里的 ./configure –help 就知道有个 –enable-thread-safe-client 选项,如果安装的时候指定就可以了(就还是用 threadsfe = True)。
当调整为threadsafe的方法时候,知识将lmysqlclient_r更换为lmysqlclient。并没有根除这个问题。
在网上查看了遇到很多类似问题。后来在mysql官网上,搜索了一下lmysqlclient,发现一条如下的信息:
Connector/C (libmysqlclient) is a client library for C development.
其实libmysqlclient是一个客户端类库为了C开发者,关于这个文件的说明地址如下:
http://dev.mysql.com/doc/connector-c/en/connector-c-installation-binary.html
在文中提到,使用rpm安装mysql的时候,需要安装的类库:shared和devel,而我只安装了devel。安装shared解决问题。
Installing MySQL Connector/C on Linux Using RPM Packages There are two Linux RPM packages for MySQL Connector/C. Install one or both, depending on the capabilities you require: The shared RPM contains the shared client library. Install this RPM if you intend to compile or run C API applications that depend on the shared client library. The devel RPM contains the header files and the static client library. Install this RPM if you intend to compile C API applications.
1. 在之前安装lua的时候,也出现过/usr/bin/ld下无法找到目录。
问题描述:
在软件编译时出现usr/bin/ld: cannot find -lxxx的错误。
原因:库文件并没有导入的ld检索目录中。
解决方法:
a. 确认库文件是否存在,比如-l123, 在/usr/lib, /usr/local/lib,或其它自定义的lib下有无lib123.so, 如果只是存在lib123.so.1,
那么可以通过ln -sv lib123.so.1 lib123.so,建立一个连接重建lib123.so.
b. 检查/etc/ld.so.conf中的库文件路径是否正确,如果库文件不是使用系统路径,/usr/lib, /usr/local/lib, 那么必须在文件中加入。
c. ldconfig 重建ld.so.cache文件,ld的库文件检索目录存放文件。
尤其刚刚编译安装的软件,必须运行ldconfig,才能将新安装的库文件导入ld.so.cache.
参考:
1. http://www.cnblogs.com/rollenholt/archive/2012/05/07/2487137.html
2. http://www.linuxqq.net/archives/733.html
3. http://www.jbxue.com/LINUXjishu/15034.html
4. http://dev.mysql.com/doc/connector-c/en/connector-c-installation-binary.html