在Linux中升级默认的Python版本或安装另一个Python版本

3

我希望升级Linux中Python的默认版本,即/usr/bin/python

我已经安装了多个Python版本,如下所示:

/usr/bin/python2.7   
/usr/bin/python3.3

然而,python 命令仍然返回 python2.7
# python
Python 2.7 
Type "help", "copyright", "credits" or "license" for more information.
>>>

现在,我已经安装了一个模块,它被安装在默认版本2.7中。因此,我无法使用python3.3 script.py,因为它会返回缺少模块的错误。如何将默认版本更新到3.3?是否有一种方法也可以在/usr/bin/python3.3中安装该模块?添加:该模块是pexpect-2.3

4
你正在使用哪个Linux版本?据我所知,唯一将python符号链接到python3的发行版是Arch。 - Alex Chamberlain
1
你是如何安装这个模块的?如果你是从源代码安装的,那么 python3.3 setup.py install 应该可以解决问题。 - Wooble
1
Pexpect是使用Python 2.5编写和测试的。它应该可以在具有pty模块的早期版本上运行。这会让我认为它不可能在Python 3上运行。 - Wooble
@Wooble 是的,我也这么认为。在那种情况下,我可能需要选择不同的模块。 - user966588
1
pexpect-u 看起来像是一个在 Python 3 上工作的分支;我自己还没有尝试过。 - Wooble
显示剩余3条评论
2个回答

1
安装新的python,默认情况下会安装在/usr/local/bin中。
在之前默认的Python路径之前将此路径添加到PATH中,即可解决问题。
export PATH=/usr/local/bin:$PATH
# This export statement could be added to .bashrc for permanent effect.

这样旧的Python就不会出问题,新的版本也安装好了。
另外,如果已经在/usr/local/bin中存在一个python,更改符号链接/usr/local/bin/python到新的/usr/local/bin/python3.3可以解决问题。(通常只有在安装到/usr/local/bin时才会创建Python的链接。您可以在/usr/local/bin/python上运行ls来验证它是链接。因为Python被安装为/usr/local/bin/python2.7,然后创建以下链接)

/usr/local/bin/python -> /usr/local/bin/python2.7

或者

/usr/local/bin/python -> /usr/local/bin/python3.3

当然,像上面提到的那样,这个路径应该添加到PATH中。
除非有强烈的理由,否则最好不要触及和干扰/usr/bin/python版本,因为/usr/bin/python通常不是链接,并且许多操作系统模块都需要它。

1
被采纳的答案很好,但是我发现了另一个解决这个问题的黑科技,并且我认为它非常简单。
/usr/bin/ 的位置有许多与 Python 相关的文件可用。您可以看到文件 python 实际上是一个链接,指向 python2(它指向 python2.7)。 因此,每当您输入命令 python 时,它调用的是 python2.7 而不是 python3.5 解决方案是删除原始的 python 链接,并创建另一个链接,该链接指向 python3.5,并将新链接文件名设为 python
然后你就完成了。 :D

1
请注意,这些发行版将python2作为“python”可执行文件的参考是有原因的:一些程序仍未准备好使用python3。尽管Ubuntu正在努力向python3迈进,但它仍需要更新相当多的组件,这意味着按照您所描述的做法目前会破坏您的系统。希望在一两年内,主要的发行版将只使用python3,但在那之前,我认为这不是一个好主意。只需在启动程序时指定“python3”即可! - Bakuriu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接