编译的Python二进制报告错误的版本

时间:2015-07-11 21:59:03

标签: python linux python-2.7 ubuntu

我尝试从源代码编译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,但我需要该标志才能使我的其他软件正常工作。

3 个答案:

答案 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配置文件中。