错误:命令失败,rc = 65536 python和mod_wsgi

时间:2012-07-04 16:28:24

标签: python mod-wsgi

我遇到了这个问题:

我正在运行pythonbrew来获取python2.7,所以我重新编译mod_wsgi以使用2.7 python。

为此,我遵循了本教程:

code.google.com/p/modwsgi/wiki/QuickInstallationGuide

涉及下载文件 - 我得到一个tar.gz文件 - 然后用./configure --with-python=/home/bharal/.pythonbrew/pythons/Python-2.7.2/bin/python --enable-shared“配置它”

现在我假设这是我的python附加的正确位置 - 上面带有-python的值只是我得到which python的响应

OK!所以,现在问题。运行上面的配置后,我运行make,然后我得到:

/usr/include/features.h:160:1: warning: this is the location of the previous definition
/usr/share/apr-1.0/build/libtool --silent --mode=link --tag=disable-static x86_64-linux-gnu-gcc -o mod_wsgi.la  -rpath /usr/lib/apache2/modules -module -avoid-version    mod_wsgi.lo -L/home/aiyer    /.pythonbrew/pythons/Python-2.7.2/lib -L/home/aiyer/.pythonbrew/pythons/Python-2.7.2/lib  /python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm
/usr/bin/ld: /home/bharal/.pythonbrew/pythons/Python-2.7.2/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/home/aiyer/.pythonbrew/pythons/Python-2.7.2/lib/libpython2.7.a: could not read symbols: Bad  value
collect2: ld returned 1 exit status
apxs:Error: Command failed with rc=65536

我不知道该怎么做。我遇到的答案是:

https://stackoverflow.com/a/6118155/1061426

但这对我没有任何帮助 - 它不是我可以说出一系列步骤,而是更多一个有趣的想法。

我运行此命令来检查我是否有python 64位:

import sys
print maxint

如果64位==> 9223372036854775807 如果32位==> 2147483647

好吧,所以我的手机运行64位,因为我得到的数字更大。所以我在这里读了这个doco:

http://code.google.com/p/modwsgi/wiki/InstallationIssues#Mixing_32_Bit_And_64_Bit_Packages

因为我正在运行64位python,那意味着我的问题不是这个:

  

这个错误被认为是最初为通用X86 32位架构编译的Python版本的结果,而mod_wsgi是针对X86 64位架构编译的。在这种情况下会出现实际错误,因为“libtool”似乎无法从X86 32位静态库为X86 64位架构生成可动态加载的模块。

而是这个?

  

或者,问题是由于此平台上的“libtool”无法在所有情况下都无法从X86 64位静态库创建可加载模块。

(以上引用来自上述链接)

如果 就是这种情况,我该怎么办?我没有最模糊的想法在 场景中做什么 - 是的,我读了那页的其余部分,但它也可能是用希腊语写的(我不会说希腊语)

有什么建议吗?

更新: 我从来没有解决这个问题,最后使用了我的ubuntu附带的python - 与我的代码的运行没有区别。

3 个答案:

答案 0 :(得分:6)

文档说:

  

如果是第一个问题,解决此问题的唯一方法是重新编译   用于X86 64位架构的Python。这样做的时候是   优选,并且实际上可能是必要的,以确保   “--enable-shared”选项提供给“configure”脚本   Python在编译和安装时。

因此,您需要从源代码重新安装Python,确保在运行'make'之前为Python的'configure'命令提供'--enable-shared'选项。

如果'pythonbrew'不允许你这样做,那么告诉pythonbrew的人他们使用共享库支持构建他们的Python版本的方式可能会被打破并且会阻止许多嵌入式系统无法运行。

答案 1 :(得分:0)

我自己使用Fedora 19 64bit遇到了这个问题,我发现如果安装了Python-devel和httpd-devel软件包,mod_wsgi将从源代码编译和安装。

但我没有使用pythonbrew。

答案 2 :(得分:0)

我亲爱的Python开发人员,我也遇到了同样的错误,这就是我如何解决的错误。第一步是使用--enable-shared选项安装python。接下来,请确保已为Apache和Python安装了dev依赖项。 sudo apt-get install apache2-devsudo apt-get install python3.8-dev。我使用的是Python 3.8,因此我安装了python3.8-dev。您需要安装与您的python版本匹配的一个。

除此之外,请阅读此文章并严格按照此处的说明https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html#apache-requirements

我只是遵循它,并且能够使其正常运行。