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

编译的Python二进制报告错误版本,python,linux,python-2.7,ubuntu,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 以及哪个python的输出是/my/local/dir/bin/python,这是正确的 但是当我运行python--version时,我看到的是python2.7.3,而不是python2.7.10 Python

我试图从源代码处编译Python 2.7。
以下是我的命令:

./configure --prefix=/my/local/dir --exec-prefix=/my/local/dir --enable-shared --with-pydebug
make
make install
以及
哪个python
的输出是
/my/local/dir/bin/python
,这是正确的

但是当我运行
python--version
时,我看到的是
python2.7.3
,而不是
python2.7.10

Python的系统版本是2.7.3。它是否可能是Python的系统版本以某种方式将自身链接到本地编译版本?还是我做错了什么

编辑:

/my/local/dir/bin/python--version
的输出也是
python2.7.3

编辑2:


似乎如果我去掉
--enable shared
标志,它将生成正确的Python版本,但我需要该标志才能让我的其他软件工作。

您可能需要更改
PYTHONHOME
环境变量,以便它使用新版本:

export PYTHONHOME=/my/local/dir/


*如果你想使更改永久性考虑,将其添加到shell配置文件中。

记住,shell缓存二进制文件的位置,而不是每次查看“代码>路径< /代码>。

因此,如果您以前在同一个shell中运行过
python
,它仍将使用旧版本

使用
hash-r
在不启动新shell的情况下修复此问题。

因此可以修复我的问题。引用消息来源:

如果尝试从构建目录运行--enable共享python可执行文件,则需要告诉动态加载程序在何处找到共享库,即构建目录本身。一种方法是使用LD_LIBRARY_PATH环境变量。否则,动态加载程序将在标准路径(如/usr/local/lib/和/usr/lib/)中搜索具有正确名称的共享库(如libpython2.7.so.1.0)。如果已经安装了一个使用该名称的旧Python,并且ABI没有太多更改,那么您可能很幸运,它将加载并运行


如果运行
/my/local/dir/bin/python--version
,会发生什么?如果这种情况是正确的,那么您的shell只是缓存
python
的位置,正如o11c所提到的那样。@laogodritt在某些系统上,输出仍然是
python 2.7.3
,而
是作为程序而不是shell内置程序实现的,并且可能无法告诉您shell将真正运行什么。最好看看命令告诉您shell的真实想法。对于
bash
,该命令是
type
。查看
help type
了解更多信息。@MikeDeSimone
type python
仍然会给出相同的结果,它会告诉您路径是否被哈希(并且
hash-r
会清除它)。您可能还想尝试
type-a python
,它将按顺序列出路径上的所有python。我尝试了,但没有成功。我运行了
/my/local/dir/bin/python--version
,它仍然给出了
python2.7.3
,似乎需要一个
export-LD\u-LIBRARY\u-PATH=。
来完成这项工作。