在Ubuntu中更改Python3默认版本


72

我正在使用Ubuntu 16.04 LTS。我已经python3安装好了。安装了两个版本,python 3.4.3python 3.6。每当我使用python3命令时,python 3.4.3默认情况下都会使用它。我想搭配python 3.6使用python3

python3 --version 表演 version 3.4.3

我正在安装ansible支持version > 3.5。因此,每当我在终端中键入ansible时,由于python 3.4


用于执行python 3.6的命令是什么?

命令是:-python3.6
codeclue

3
sudo update-alternatives --config python3说什么
MikaelKjær17年

1
update-alternatives:错误:python3没有替代方法
codeclue

请参阅以下答案中有关如何在特定版本的python3中使用ansible的评论。您也可以考虑删除python 3.4。
MikaelKjær17年

Answers:


96

从评论:

sudo update-alternatives --config python

将显示一个错误:

update-alternatives: error: no alternatives for python3 

您需要更新update-alternatives,然后才能设置默认的python版本。

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2

然后运行:

sudo update-alternatives --config python

将python3.6设置为默认值。

或使用以下命令将python3.6设置为默认值:

sudo update-alternatives  --set python /usr/bin/python3.6

1
这个答案可能会中断apt。选择其他版本的python后,尝试运行sudo apt update。如果它给您一个错误,就像ModuleNotFoundError: No module named 'apt_pkg'您要转到/usr/lib/python3/dist-packages并创建符号链接:ln -s apt_pkg.cpython-{34m,36m}-x86_64-linux-gnu.so
Giacomo Alzetta

它给了我一个错误:有$ sudo update-alternatives --set python /usr/bin/python3.6 update-alternatives: error: no alternatives for python什么建议吗?
Slava Fomin II

1
@ GAD3R谢谢。我设法手动创建了一个符号链接以指向Python 3.6。另外,我没有安装3.7。
Slava Fomin II

制作python3python3.8用这种方法打破了gnome-terminal我。
鲍里斯

10

您可以通过以下简单的步骤实现此目标-

  1. 在终端上检查python版本- python --version
  2. 获取root用户特权。在终端类型上-sudo su
  3. 写下root用户密码
  4. 执行此命令以切换到python 3.6-
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. 检查python版本- python --version
  6. 做完了

1
可行,易于阅读且不使用别名。+1
卡洛斯·品松

在Ubuntu 18.04上运行良好。比其他解决方案简单。非常感谢
Mohammad Heydari

7

为/ usr / bin / python3创建符号链接。在我的LinuxMint中:

# ls -lh /usr/bin/python3 /usr/bin/python
lrwxrwxrwx 1 root root 9 ноя 24  2017 /usr/bin/python -> python2.7
lrwxrwxrwx 1 root root 9 сен  6  2017 /usr/bin/python3 -> python3.5

# mv /usr/bin/python
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2

6

使用这些命令可以帮助您:

  1. 检查python的版本: ls /usr/bin/python*
  2. 别名: alias python='/usr/bin/pythonxx'
  3. 重新登录: . ~/.bashrc
  4. 再次检查python版本: python --version

谢谢,但是重新启动计算机后,主要的python仍然是ex python 2.7
Mohammad Heydari

3

一个简单的答案是为python3.6添加一个别名。

只需将这一行添加到文件〜/ .bashrc:中alias python3="python3.6",然后关闭您的终端并打开一个新终端。现在,当您键入python3 xxx内容时,它将转换为python3.6 xxx

此解决方案无需过多调整系统即可解决您的问题。

编辑:

正如MikaelKjær指出的那样,这是对您的系统ansible的错误配置。

如此处所示

ansible_python_interpreter配置选项设置为/ usr / bin / python3。ansible_python_interpreter配置选项通常按主机设置为与主机或主机组关联的清单变量:

  # Example inventory that makes an alias for localhost that uses python3
  [py3-hosts]
  localhost-py3 ansible_host=localhost ansible_connection=local

  [py3-hosts:vars]
  ansible_python_interpreter=/usr/bin/python3

如此关于配置文件所示:

可以在配置文件中进行更改并使用更改,配置文件将按以下顺序处理:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

实际上,我正在安装ansible,它仅支持> python 3.5
codeclue

1
您可以将ansible_python_interpreter变量设置为使用python3.6。docs.ansible.com/ansible/latest/python_3_support.html
的MikaelKjær的

@MikaelKjær我刚刚在您的回答中添加了您的评论

1

如果您的系统中有多个版本的python。您只需要在内部更新python的符号链接/usr/bin/

root@irshad:/usr/bin# ls -lrth python*
lrwxrwxrwx 1 root root    9 Apr 16  2018 python -> python2.7
-rwxr-xr-x 1 root root 3.6M Nov 12  2018 python2.7
-rwxr-xr-x 2 root root 4.4M May  7 14:58 python3.6

在上面的示例中,如果看到输出,python --version将得到python2.7

现在使用以下命令更新python symlink-

root@irshad:/usr/bin# unlink python
root@irshad:/usr/bin# ln -s /usr/bin/python3.6 python
root@irshad:/usr/bin# python --version
Python 3.6.8

0

update-alternatives是将系统符号链接更改为用户定义/管理员定义的符号链接。如果您的系统中安装了多个python3版本,并且想要控制在调用python3时要调用哪个python3版本。请执行下列操作

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.4 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2

如果将来要更改优先级,请运行以下命令。

update-alternatives --config python3

说明:-

sudo update-alternatives --install <symlink_origin> <name_of_config> <symlink_destination> <priority>

您可以继续将name_of_config更改为python4,但随后必须使用python4调用update-alternatives --config进行重新配置。

使用这种方法,您可以分别控制系统python版本和python3版本。


0

第一次检查你的python3.6文件夹

ls /usr/bin/python3.6

如果您有像python3.6这样的文件夹,可以使用

然后更新替代品

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1

现在更新python3的新配置

sudo update-alternatives --config python3

检查python版本

python3 --version


0

您可以通过ln -sf python3.6 python3inside 更改符号链接/usr/bin。有了这个,当您打电话python3时它将执行python3.6

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.