如何在CentOS上将Python3.5.2设置为默认的Python版本?

时间:2017-08-07 08:39:34

标签: python centos python-3.5

有没有办法将Python 3.5.2设置为CentOS 7上的默认Python版本?目前,我默认安装了Python 2.7,单独安装了Python 3.5.2。

我使用了以下命令

mv /usr/bin/python /usr/bin/python-old
sudo ln -fs /usr/bin/python3 /usr/bin/python

但在此之后yum会出错。

-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory

我在这里找不到什么东西?

注意:它是Linux CentOS 7, how to set Python2.7 as default Python version?

的相似但相反的问题

6 个答案:

答案 0 :(得分:18)

我建议改用“替代品”。作为超级用户(root)运行以下内容:

# start by registering python2 as an alternative
alternatives --install /usr/bin/python python /usr/bin/python2 50
# register python3.5 as an alternative
alternatives --install /usr/bin/python python /usr/bin/python3.5 60
# Select the python to use
alternatives --config python

最后一个命令会要求您在两种选择之间进行选择。

与往常一样,大多数情况下,您可以使用这个简单的命令查看手册(联机帮助页)

man alternatives

干杯

答案 1 :(得分:16)

如果这个

sudo ln -fs /usr/bin/python3 /usr/bin/python

不起作用(应该)

您可以使用以下命令在/home/.bashrc中添加别名:

alias python="/usr/bin/python3.5"

如果这不起作用,你应该只使用虚拟环境。请阅读此page以开始使用。

答案 2 :(得分:2)

问题是,Linux CentOS 7如何将Python3.5.2设置为默认Python版本?

想要补充@OldFart的答案(不幸的是,我不能发表其他评论了。)

when using the install param with update-alternatives, you can set the priority in auto mode. Implicitly saying that the alternative with the highest priority will be the default alternative should no alternative have been set manually. using the above answer as an示例,

update-alternatives --install /usr/bin/python python /usr/bin/python2 50

将设置python2替代项的优先级为50,并且

update-alternatives --install /usr/bin/python python /usr/bin/python3.5 60

会将python3.5替代项设置为60。 并且默认情况下,python 3.5成为python命令的默认python可执行文件。

您是否要更改默认的python替代品

update-alternatives --config python

找到一种更好的方法,因为我不必修改路径文件。

答案 3 :(得分:2)

选项 1) 创建软链接实际上有一个缺点。 “yum”不支持 Python3。因此,如果您仍然决定使用符号链接创建,那么您还需要更新 /usr/bin/yum

ln -s /usr/bin/python3 /usr/bin/python

并在/usr/bin/yum文件中用#!/usr/bin/python2更新shebang行

选项 2) 使用替代方案

alternatives --install /usr/bin/python python /usr/bin/python3.x 60
alternatives --config python 

选项 3) 在 bash_profile 中创建别名

alias python="/usr/bin/python3"

答案 4 :(得分:1)

我想提供一些额外的背景信息,说明为什么在OP中破坏yum,以及为什么我认为alternatives方法是最好的方法。也许还有其他最佳实践,但是我已经取得了一些发现,并希望分享我的发现。

假设3.5.2为:

  1. 按照OP的建议单独安装,类似于以下步骤:Python Installation Procedure From Source
  2. ./ configure的--prefix选项已从默认的--prefix = / usr / local / bin更新为--prefix = / usr / bin / python3

将/ usr / bin / python3位置上的“单独安装的3.5.2”链接到/ usr / bin / python上的系统python的命令覆盖或修改了系统python,从而破坏了yum。

这种方法补充了@OldFart的答案,并希望能提供有关导致单独安装python可能导致问题的根本原因的其他观点。

update-alternatives是我遇到类似问题的新鲜空气

答案 5 :(得分:0)

这是为python设置替代配置选项后得到的

[root@localhost ~]# update-alternatives --config python

There are 2 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
   1           /usr/bin/python2.7
*+ 2           /usr/bin/python3.7

Enter to keep the current selection[+], or type selection number: 2
[root@localhost ~]#
[root@localhost ~]# python
-bash: /usr/bin/python: No such file or directory