4

我遇到了这个问题:

我正在运行 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 - 从我的代码运行的角度来看没有区别。

4

3 回答 3

6

文档说:

如果是第一个问题,解决这个问题的唯一方法是为 X86 64 位架构重新编译 Python。这样做时,最好并且实际上可能有必要确保在编译和安装 Python 的“配置”脚本时为其提供“--enable-shared”选项。

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

如果“pythonbrew”不允许您这样做,那么请告诉 pythonbrew 人员,他们构建具有共享库支持的 Python 版本的方式可能会被破坏,并且会阻止许多嵌入式系统运行失败。

于 2012-07-04T23:48:55.790 回答
0

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

但是,我没有使用 pythonbrew。

于 2013-12-03T13:34:26.077 回答
0

我亲爱的 Python 开发人员,我也遇到了同样的错误,这就是我修复它的方法。第一步是您将安装带有--enable-shared选项的python。接下来,确保您为 Apache 和 Python 安装了开发依赖项。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

我只是跟着它,并且能够使它正常工作。

于 2020-05-18T06:28:09.830 回答