MySQLdb模块的安装和问题处理

来源:互联网 发布:紫鸟数据魔方收费吗 编辑:程序博客网 时间:2024/06/06 02:21

      安装过程主要是以下几步

wget http://nchc.dl.sourceforge.net/project/mysql-python/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gztar xfz MySQL-python-1.2.3.tar.gzcd MySQL-python-1.2.3wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2bsh setuptools-0.6c11-py2.4.eggfind / -name mysql_config vi setup_posix.pypython setup.py buildpython setup.py install

基本环境:
目标机器数据库Mysql 4.1.7-standard,linux版本 Red Hat 4.1.2-14,Python 2.4.3

1.搭建数据库操纵环境
Python用的是MySQLdb这个库。从http://sourceforge.net/projects/mysql-python/下载最新的MySQLdb包:
wget http://nchc.dl.sourceforge.net/project/mysql-python/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
阅读里面的README,搞清楚安装步骤.
 
这个过程需要setuptools
wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b
sh setuptools-0.6c11-py2.4.egg

首先查找mysql_config的位置,使用find / -name mysql_config ,比如我的在/usr/local/mysql/bin/mysql_config

修改setup_posix.py文件,在26行:
mysql_config.path = "mysql_config" 修改为:
mysql_config.path = "/usr/local/mysql/bin/mysql_config"

python setup.py build
python setup.py install


      安装完进行测试,如成功则OK,否则要进行错误处理

      我就遇到了

>>> import MySQLdb/usr/lib/python2.4/site-packages/MySQL_python-1.2.3-py2.4-linux-i686.egg/_mysql.py:3: UserWarning: Module _mysql was already imported from /usr/lib/python2.4/site-packages/MySQL_python-1.2.3-py2.4-linux-i686.egg/_mysql.pyc, but /home/root1/MySQL-python-1.2.3 is being added to sys.pathTraceback (most recent call last):  File "<stdin>", line 1, in ?  File "MySQLdb/__init__.py", line 19, in ?    import _mysql  File "build/bdist.linux-i686/egg/_mysql.py", line 7, in ?  File "build/bdist.linux-i686/egg/_mysql.py", line 6, in __bootstrap__ImportError: /home/root1/.python-eggs/MySQL_python-1.2.3-py2.4-linux-i686.egg-tmp/_mysql.so: undefined symbol: compress

     问题1:主要是编译时候少了-lz造成undefined symbol:compress,所以在删除build目录后,python setup.py build执行最后会看到

gcc -pthread -shared build/temp.linux-i686-2.4/_mysql.o -L/usr/local/mysql-standard-4.1.7-pc-linux-i686/lib -lmysqlclient_r -lpthread -lcrypt -lnsl -lm -lpthread -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv -o build/lib.linux-i686-2.4/_mysql.so


复制该语句,后面加上 -lz 重新运行下,在进行install就好了

gcc -pthread -shared build/temp.linux-i686-2.4/_mysql.o -L/usr/local/mysql-standard-4.1.7-pc-linux-i686/lib -lmysqlclient_r -lpthread -lcrypt -lnsl -lm -lpthread -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv -o build/lib.linux-i686-2.4/_mysql.so -lz

       问题2:警告UserWarning: Module _mysql was already imported

       原因是,install后MySQLdb模块已经被放到python的site-pachages目录中;但我在当前目录也存在相同的模块,所以可能会重复导入。只要切换到其他目录运行就可以了。





原创粉丝点击