当我用
添加python 2.7.12时./ configure --prefix = / opt / python --enable-shared
它出现为python 2.7.5(系统默认python)
但没有
- 启用共享
它出现在2.7.12,我错过了什么?
这是RHEL 7.2
这不是一个路径问题:
没有--enable-shared
[root @myrig~]#/ opt / python / bin / python2.7 -V
Python 2.7.12
使用--enable-shared
[root @myrig~]#/ opt / python / bin / python2.7 -V
Python 2.7.5
答案 0 :(得分:5)
像这样编译python修复了我的问题:
./configure --enable-shared --prefix=/opt/python LDFLAGS=-Wl,-rpath=/opt/python/lib
礼貌的Ned Deily:
问题是,在大多数Unix系统上(除了Mac OS X之外),共享库的路径不是绝对路径。因此,如果您在非标准位置安装Python,这是正确的做法,以免干扰相同版本的系统Python,您将需要在共享库的路径中配置或通过运行时的环境变量,如LD_LIBRARY_PATH。你可能最好避免 - 启用共享;用这个很容易遇到这样的问题。
答案 1 :(得分:4)
我不确定为什么版本号不同,但Graham Dumpleton在this网站上说“当运行configure时,你应该提供--enable-shared选项以确保构建共享库对于Python。如果不这样做,就会阻止任何想要使用Python作为嵌入式环境的应用程序工作。“
答案 2 :(得分:4)
使用ldd命令,您可以查看可执行文件搜索库的位置:
ldd python2.7
linux-vdso.so.1 => (0x00007fffa75ec000)
libpython2.7.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 (0x00007f717042e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7170211000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f716fe46000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f716fc2c000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f716fa28000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f716f824000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f716f51b000)
/lib64/ld-linux-x86-64.so.2 (0x000055969d00b000)enter code here
您可以在环境中更改python2.7的lib搜索路径设置LD_LIBRARY_PATH变量(非持久性):
export LD_LIBRARY_PATH=/opt/python/lib
或设置持续的系统范围:
echo "/opt/python/lib" > /etc/ld.so.conf.d/python.conf
ldconfig -v
或设置持久的可执行方式:
patchelf --set-rpath /opt/python/lib/ python2.7