免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8069 | 回复: 4
打印 上一主题 下一主题

在Linux 64位系统中安装MySQL-Python-1.2.2的问题 [已解决] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-09 09:33 |只看该作者 |倒序浏览
系统: centos5.2 x86-64
MySQL:5.1.32 64位
Python2.4
MySQL-python-1.2.2

site.cfg的内容:

  1. [options]

  2. embedded = False
  3. threadsafe = False
  4. static = True

  5. mysql_config = /usr/local/mysql/bin/mysql_config

  6. registry_key = SOFTWARE\MySQL AB\MySQL Server 5.0
复制代码

  1. [root@db MySQL-python-1.2.2]# python2.4 setup.py build
  2. running build
  3. running build_py
  4. copying MySQLdb/release.py -> build/lib.linux-x86_64-2.4/MySQLdb
  5. running build_ext
  6. building '_mysql' extension
  7. gcc -pthread -shared build/temp.linux-x86_64-2.4/_mysql.o /usr/local/mysql/lib/mysql/libmysqlclient.a -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -o build/lib.linux-x86_64-2.4/_mysql.so
  8. /usr/bin/ld: /usr/local/mysql/lib/mysql/libmysqlclient.a(libmysql.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
  9. /usr/local/mysql/lib/mysql/libmysqlclient.a: could not read symbols: Bad value
  10. collect2: ld returned 1 exit status
  11. error: command 'gcc' failed with exit status 1
复制代码


执行这一步报错,到网上搜了一下,说只要把libmysqlclient.a做个软链到build/lib.linux-x86_64-2.4/_mysql.so就可以

  1. [root@db MySQL-python-1.2.2]# ln -s /usr/local/mysql/lib/mysql/libmysqlclient.a ./build/lib.linux-x86_64-2.4/_mysql.so
复制代码


再运行安装就不会报错了

  1. [root@db MySQL-python-1.2.2]# python2.4 setup.py build
  2. running build
  3. running build_py
  4. copying MySQLdb/release.py -> build/lib.linux-x86_64-2.4/MySQLdb
  5. running build_ext
  6. [root@db MySQL-python-1.2.2]# python2.4 setup.py install
  7. running install
  8. running bdist_egg
  9. running egg_info
  10. writing MySQL_python.egg-info/PKG-INFO
  11. writing top-level names to MySQL_python.egg-info/top_level.txt
  12. writing dependency_links to MySQL_python.egg-info/dependency_links.txt
  13. reading manifest file 'MySQL_python.egg-info/SOURCES.txt'
  14. reading manifest template 'MANIFEST.in'
  15. writing manifest file 'MySQL_python.egg-info/SOURCES.txt'
  16. installing library code to build/bdist.linux-x86_64/egg
  17. running install_lib
  18. running build_py
  19. copying MySQLdb/release.py -> build/lib.linux-x86_64-2.4/MySQLdb
  20. running build_ext
  21. creating build/bdist.linux-x86_64/egg
  22. copying build/lib.linux-x86_64-2.4/_mysql_exceptions.py -> build/bdist.linux-x86_64/egg
  23. copying build/lib.linux-x86_64-2.4/_mysql.so -> build/bdist.linux-x86_64/egg
  24. creating build/bdist.linux-x86_64/egg/MySQLdb
  25. copying build/lib.linux-x86_64-2.4/MySQLdb/connections.py -> build/bdist.linux-x86_64/egg/MySQLdb
  26. copying build/lib.linux-x86_64-2.4/MySQLdb/times.py -> build/bdist.linux-x86_64/egg/MySQLdb
  27. copying build/lib.linux-x86_64-2.4/MySQLdb/__init__.py -> build/bdist.linux-x86_64/egg/MySQLdb
  28. copying build/lib.linux-x86_64-2.4/MySQLdb/cursors.py -> build/bdist.linux-x86_64/egg/MySQLdb
  29. creating build/bdist.linux-x86_64/egg/MySQLdb/constants
  30. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/FIELD_TYPE.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  31. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/__init__.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  32. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/ER.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  33. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/CR.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  34. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/REFRESH.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  35. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/CLIENT.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  36. copying build/lib.linux-x86_64-2.4/MySQLdb/constants/FLAG.py -> build/bdist.linux-x86_64/egg/MySQLdb/constants
  37. copying build/lib.linux-x86_64-2.4/MySQLdb/converters.py -> build/bdist.linux-x86_64/egg/MySQLdb
  38. copying build/lib.linux-x86_64-2.4/MySQLdb/release.py -> build/bdist.linux-x86_64/egg/MySQLdb
  39. byte-compiling build/bdist.linux-x86_64/egg/_mysql_exceptions.py to _mysql_exceptions.pyc
  40. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/connections.py to connections.pyc
  41. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/times.py to times.pyc
  42. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/__init__.py to __init__.pyc
  43. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/cursors.py to cursors.pyc
  44. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/FIELD_TYPE.py to FIELD_TYPE.pyc
  45. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/__init__.py to __init__.pyc
  46. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/ER.py to ER.pyc
  47. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/CR.py to CR.pyc
  48. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/REFRESH.py to REFRESH.pyc
  49. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/CLIENT.py to CLIENT.pyc
  50. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/constants/FLAG.py to FLAG.pyc
  51. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/converters.py to converters.pyc
  52. byte-compiling build/bdist.linux-x86_64/egg/MySQLdb/release.py to release.pyc
  53. creating stub loader for _mysql.so
  54. byte-compiling build/bdist.linux-x86_64/egg/_mysql.py to _mysql.pyc
  55. creating build/bdist.linux-x86_64/egg/EGG-INFO
  56. writing MySQL_python.egg-info/native_libs.txt
  57. copying MySQL_python.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
  58. copying MySQL_python.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
  59. copying MySQL_python.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
  60. copying MySQL_python.egg-info/native_libs.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
  61. copying MySQL_python.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
  62. zip_safe flag not set; analyzing archive contents...
  63. creating 'dist/MySQL_python-1.2.2-py2.4-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it
  64. removing 'build/bdist.linux-x86_64/egg' (and everything under it)
  65. Processing MySQL_python-1.2.2-py2.4-linux-x86_64.egg
  66. Removing /usr/lib64/python2.4/site-packages/MySQL_python-1.2.2-py2.4-linux-x86_64.egg
  67. Copying MySQL_python-1.2.2-py2.4-linux-x86_64.egg to /usr/lib64/python2.4/site-packages
  68. MySQL-python 1.2.2 is already the active version in easy-install.pth

  69. Installed /usr/lib64/python2.4/site-packages/MySQL_python-1.2.2-py2.4-linux-x86_64.egg
  70. Processing dependencies for MySQL-python==1.2.2
复制代码


可是进入python2.4执行import MySQLdb却会报这样的错:

  1. [root@db ~]# python2.4
  2. Python 2.4.3 (#1, May 24 2008, 13:57:05)
  3. [GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import MySQLdb
  6. Traceback (most recent call last):
  7.   File "<stdin>", line 1, in ?
  8.   File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 19, in ?
  9.   File "build/bdist.linux-x86_64/egg/_mysql.py", line 7, in ?
  10.   File "build/bdist.linux-x86_64/egg/_mysql.py", line 6, in __bootstrap__
  11. ImportError: /root/.python-eggs/MySQL_python-1.2.2-py2.4-linux-x86_64.egg-tmp/_mysql.so: invalid ELF header
  12. >>>

复制代码


请大侠们帮帮忙,以前在32位的系统里装过,一切正常,但64位的还是第一次装,希望能得到哪位大侠的帮助 !!

[ 本帖最后由 00306 于 2009-3-9 09:42 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-03-09 09:42 |只看该作者
我已经解决了
呵呵
原来是site.cfg的问题

在site.cfg里修改

  1. threadsafe = True
  2. static = False
复制代码


然后把安装目录下的build目录删掉,重新运行

  1. python setup.py build
  2. python setup.py install
复制代码

不会报错了
而且运行import MySQLdb也不会报错了

[ 本帖最后由 00306 于 2009-3-9 09:44 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-03-09 09:52 |只看该作者
原帖由 00306 于 2009-3-9 09:33 发表
说只要把libmysqlclient.a做个软链到build/lib.linux-x86_64-2.4/_mysql.so


直接这样能行么?

论坛徽章:
0
4 [报告]
发表于 2009-03-09 11:54 |只看该作者
原帖由 luffy.deng 于 2009-3-9 09:52 发表


直接这样能行么?



这样安装没问题,但是运行import MySQLdb就会报错
后来改一下site.cfg,把build目录删了重新安装就可以了

论坛徽章:
0
5 [报告]
发表于 2009-03-09 12:46 |只看该作者
原帖由 00306 于 2009-3-9 09:42 发表
我已经解决了
呵呵
原来是site.cfg的问题

在site.cfg里修改

threadsafe = True
static = False

然后把安装目录下的build目录删掉,重新运行

python setup.py build
python setup.py install

...

恩,我也碰到过。换个64位系统啥稀奇古怪的问题都有。感谢分享经验
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP