Linux下python安装 MySQLdb的问题 不指定

root , 2007/09/22 00:02 , Python , 评论(0) , 阅读(7954) , Via 本站原创 | |
    今天在一台机器上安装python的MySQLdb,遇到了以前碰到过的一个问题,想到当时这个问题可折腾了我挺久的。于是把问题及问题的解决写下来,希望对其他遇到这个问题的朋友有帮助。 问题: 安装的过程一些正常:python setup.py build && python setup.py install 但是安装完毕之后import MySQLdb的时候发生如下错误:
引用

Python 2.5.1 (r251:54863, Jul 16 2007, 10:57:41) [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> import MySQLdb Traceback (most recent call last): File ““, line 1, in File “build/bdist.linux-i686/egg/MySQLdb/__init__.py”, line 19, in File “build/bdist.linux-i686/egg/_mysql.py”, line 7, in File “build/bdist.linux-i686/egg/_mysql.py”, line 6, in __bootstrap__ ImportError: /root/.python-eggs/MySQL_python-1.2.2-py2.5-linux-i686.egg-tmp/_mysql.so: undefined symbol: compress >>>

出现问题的原因:在编译的时候没有加载zlib。 问题的解决:
1、rm build -rdf :删除build目录,使得运行setup.py build的时候会重新编译。
2、运行python setup.py build,在最后一行会看到如下的信息:
gcc -pthread -shared build/temp.linux-i686-2.5/_mysql.o -L/data2/mysql/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.5/_mysql.so
把上述信息复制然后在编译语句的最后添加 -lz 重新编译_mysql.so 运行:gcc -pthread -shared build/temp.linux-i686-2.5/_mysql.o -L/data2/mysql/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.5/_mysql.so -lz

3、运行python setup.py install即可。
这是再import MySQLdb的时候就不会报错啦。
Python 2.5.1 (r251:54863, Jul 16 2007, 10:57:41) [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-42)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> import MySQLdb >>>
Tags: ,
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]