我遇到了这个问题:
我正在运行 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 附加的正确位置 - 上面 with-python 的值只是我得到的响应which python
好的!所以,现在的问题。运行上面的配置后,我运行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 位的手提袋,因为我得到了更大的数字。所以我在这里读了这个文档:
http://code.google.com/p/modwsgi/wiki/InstallationIssues#Mixing_32_Bit_And_64_Bit_Packages
因为我正在运行 64 位 python,这是否意味着我的问题不在于:
这个错误被认为是因为使用的 Python 版本最初是为通用 X86 32 位架构编译的,而 mod_wsgi 是为 X86 64 位架构编译的。在这种情况下会出现实际错误,因为“libtool”似乎无法从 X86 32 位静态库中为 X86 64 位体系结构生成可动态加载的模块。
而是这个?
或者,问题是由于此平台上的“libtool”在所有情况下都无法从 X86 64 位静态库创建可加载模块。
(以上引用来自上述链接)
如果是这样,我该怎么办?在这两种情况下我都没有最模糊的概念——是的,我阅读了该页面的其余部分,但它也可能是用希腊语写的(我不会说希腊语)。
有什么建议么?
更新:我从来没有解决这个问题,最终使用了我的 ubuntu 附带的 python - 从我的代码运行的角度来看没有区别。