我尝试从源代码编译Python 2.7。这是我的命令:
./configure --prefix=/my/local/dir --exec-prefix=/my/local/dir --enable-shared --with-pydebug
make
make install
which python
的输出为/my/local/dir/bin/python
,这是正确的。
但是当我运行python --version
时,我看到Python 2.7.3
而不是Python 2.7.10
。
Python的系统版本是2.7.3。可能是Python的系统版本以某种方式将自己与本地编译版本链接起来?或者我做错了什么?
编辑:
./my/local/dir/bin/python --version
的输出也是Python 2.7.3
编辑2:
似乎如果我摆脱--enable-shared
标志它将产生正确版本的Python,但我需要该标志才能使我的其他软件正常工作。
答案 0 :(得分:5)
所以this post能解决我的问题。引用来源:
如果您尝试从其构建目录运行--enable-shared python可执行文件,您需要告诉动态加载程序在何处查找共享库,即构建目录本身。一种方法是使用LD_LIBRARY_PATH环境变量。否则,动态加载程序将搜索标准路径,例如/ usr / local / lib /和/ usr / lib /,以获取具有正确名称的共享库(如libpython2.7.so.1.0)。如果已经使用该名称安装了较旧的Python,并且ABI没有太大变化,那么您可能会很幸运,它会加载并运行。
答案 1 :(得分:2)
请记住,shell会缓存二进制文件的位置,而不是每次都查看PATH
。
因此,如果您之前在同一个shell中运行过python
,它仍会使用旧版本。
使用hash -r
解决此问题,而无需启动新的shell。
答案 2 :(得分:1)
您可能需要更改PYTHONHOME
环境变量,以便它使用新版本:
export PYTHONHOME=/my/local/dir/
https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHOME
*如果您想永久更改,请考虑将其添加到您的shell配置文件中。