Python、pyenv与重编译以解决64位问题?

1 投票
1 回答
1577 浏览
提问于 2025-04-18 16:33

我在用pyenv,想要在apache上使用python 3.4.1。

为此,我安装了mod_wsgi 4.2.7。

在编译mod_wsgi的时候,我遇到了以下错误:

Object_NextNotImplemented' can not be used when making a shared object; recompile with -fPIC
/root/.pyenv/versions/3.4.1/lib/libpython3.4m.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
apxs:Error: Command failed with rc=65536
.
make: *** [src/server/mod_wsgi.la] Error 1

根据这个页面,问题似乎和64位或32位有关,具体我也不太清楚。

总之,解决办法是重新编译python,并加上一些标志。

我该怎么解决这个问题,考虑到我在使用pyenv?

1 个回答

1

这不是解决办法,我做了这些之后还是出现同样的错误

PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4 --enable-shared" 
pyenv uninstall 3.4.1
pyenv install 3.4.1

第一行代码,我本来不觉得会有效果,我也不知道它在干嘛。我猜它只是设置了某个神秘的系统变量吧?哦,好吧,确实是这样。

我不知道unicode那部分是干什么的——这些都是在这个链接里提到的。

因为我想用python 3.4.1,而这个版本已经存在了,所以我先卸载了python 3.4.1。

然后我重新安装了python 3.4.1。

如果你想用python x.y.z,步骤也是类似的:

PYTHON_CONFIGURE_OPTS="--enable-unicode=ucs4 --enable-shared" 
pyenv uninstall x.y.z
pyenv install x.y.z

如果你之前没有安装过x.y.z版本的python,那就不需要卸载了。

整个安装过程需要……一些时间。我是在启动install命令后开始写这个回答的,直到最近才完成。

完成后我看到:

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
Installed Python-3.4.1 to /root/.pyenv/versions/3.4.1

但我不知道这到底是好还是坏。提示信息本身似乎也搞不清楚,周围全是问号。

撰写回答