Python、pyenv与重编译以解决64位问题?
我在用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
但我不知道这到底是好还是坏。提示信息本身似乎也搞不清楚,周围全是问号。