python - 在 virtualenv 中编译 mod_wsgi 的问题

标签 python mod-wsgi virtualenv

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

/usr/bin/ld: /home/python26/lib/libpython2.6.a(node.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

/home/python26/lib/libpython2.6.a: could not read symbols: Bad value

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

  • 没有
  • 不是用共享生成的
  • 是为 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 位编译的 - 如果有人有任何方式确认这一点,我将不胜感激。

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

我还尝试使用 Python 2.4 在 virtualenv外部 编译 mod_wsgi,它运行良好。不幸的是,如果我要使用 virtualenv :)

这对我没有帮助

有谁知道如何让 mod_wsgi 在 virtualenv 下编译?

最佳答案

文档的相关部分是:

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

关于python - 在 virtualenv 中编译 mod_wsgi 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116985/

相关文章:

apache2 - 模块 wsgi_module 已加载,正在跳过

python - 使用 Apache mod_wsgi 进行 HTTP 流传输

apache - 在 Ubuntu14.04/Apache2/mod_wsgi 上安装 Trac

python - 使用 pip 安装 Python 包源 tarball

python - 在 virtualenv 中安装 Flask "command not found"

python - 在Python中处理unicode转换

python - 如何在 R 中定义积分参数? (缺少参数 "a",没有默认值)

python - 如何按顺序显示猜词者猜出的字母? Python

java - 从Python服务器到Android客户端的图像数据丢失(Endian问题??)

python - 带有所有 Python 库的 virtualenv