在virtualenv中编译mod_wsgi的问题

时间:2011-05-24 21:15:49

标签: python mod-wsgi virtualenv

我正在尝试在CentOS服务器上编译mod_wsgi(版本3.3),Python 2.6,但在virtualenv下,没有成功。我收到了错误:

  

的/ usr /斌/ LD:   /home/python26/lib/libpython2.6.a(node.o):   重新定位R_X86_64_32对`a   当地符号'不能用于   制作共享对象;重新编译   -fPIC

     

/home/python26/lib/libpython2.6.a:   无法读取符号:错误值

根据mod_wsgi Installation Issues docs,可能是 libpython2.6.a 文件:

  • 不存在
  • 未使用 shared
  • 生成
  • 是为32位计算机生成的,而不是64位计算机。

嗯,该文件位于正确的位置,并且可读。我尝试使用--enable-shared选项重新编译Python 2.6,但整个编译爆炸,大致每个文件都给出相同的错误, libpython2.6.a 被软管了。

我不知道知道 Python正在为64位编译,但是当我运行它时,并且做了:

import platform
print platform.platform()
>>>Linux-2.6.18-028stab070.4-x86_64-with-redhat-5.6-Final

由于Python认为它是在x86_64上,我希望希望它编译为64位 - 如果有人有任何确认方式,我会很感激。

我尝试使用with和without --python = / home /[...]/ python2.6配置mod_wsgi Makefile,两种方式都爆炸了。

我也尝试使用Python 2.4编译virtualenv的外的mod_wsgi ,它运行正常。不幸的是,如果我要使用virtualenv,那对我没有帮助:)

任何人都知道如何在virtualenv下编译mod_wsgi?

3 个答案:

答案 0 :(得分:8)

文档的相关部分是:

http://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#mixing-32-bit-and-64-bit-packages

这提到了-fPIC问题。

http://modwsgi.readthedocs.io/en/develop/user-guides/installation-issues.html#unable-to-find-python-shared-library

当mod_wsgi找不到共享库时,需要使用LD_RUN_PATH。

可以找到有关共享库问题的其他信息以及mod_wsgi在以下位置找到错误的Python安装的问题:

http://modwsgi.readthedocs.io/en/develop/user-guides/checking-your-installation.html#python-shared-library

答案 1 :(得分:3)

如果您已从源代码构建Python,请添加--enable-shared进行配置。 (它添加-fPIC)

答案 2 :(得分:1)

您应该使用libpython2.6.a重新编译-fPIC以生成对象。

例如:

gcc -fPIC -g -c -Wall xxx.c