在 Ubuntu 中更改 Python3 默认版本

cod*_*lue 257 ubuntu python python3

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

python3 --version 显示 version 3.4.3

我正在安装ansible支持version > 3.5. 所以,每当我在终端中输入 ansible 时,它​​都会抛出错误,因为python 3.4

sudo update-alternatives --config python3
update-alternatives: error: no alternatives for python3
Run Code Online (Sandbox Code Playgroud)

GAD*_*D3R 316

从评论:

sudo update-alternatives --config python
Run Code Online (Sandbox Code Playgroud)

会显示一个错误:

update-alternatives: error: no alternatives for python3 
Run Code Online (Sandbox Code Playgroud)

你需要更新你的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
Run Code Online (Sandbox Code Playgroud)

然后运行:

sudo update-alternatives --config python
Run Code Online (Sandbox Code Playgroud)

将 python3.6 设置为默认值。

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

sudo update-alternatives  --set python /usr/bin/python3.6
Run Code Online (Sandbox Code Playgroud)

  • 这个答案可能会破坏`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`。 (18认同)
  • @Johny 我刚刚将 `alias python="python3.8"` 添加到 `~/.bash_profile` (9认同)
  • 用这个方法让 `python3` 指向 `python3.8` 对我来说破坏了 `gnome-terminal`。 (4认同)
  • 不要这样做。它会像 @Giacomo 提到的那样破坏 `apt` 以及其他操作系统组件 [比如 `do-release-upgrade`](https://askubuntu.com/q/1104052/301745)。只需使用别名即可。 (2认同)
  • 在 Ubuntu 18.04 LTS 中运行良好而不会破坏 APT。请注意那些困惑的人:如果您收到“错误:python 没有替代方案”消息,那么您需要首先运行“--install”命令(根据需要替换您想要使用的 python 版本,以及在最后只是为了顺序)然后你再次运行`--config`命令,你会被问到默认情况下你想使用哪个版本。 (2认同)

小智 52

您可以通过应用以下简单步骤来实现这一点 -

  1. 在终端上检查 python 版本: python --version
  2. 获取 root 用户权限。在终端类型上:sudo su
  3. 输入您的根密码。
  4. 执行这个命令切换到python 3.6:
    update-alternatives --install /usr/bin/python python /usr/bin/python3 1
  5. 检查python版本: python --version
  6. 完毕。

  • 第 3 步的重点是什么? (11认同)
  • 这有效:`sudo update-alternatives --set python /usr/bin/python3.7 python --version` (2认同)

New*_*ewt 19

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

  1. 检查python的版本: ls /usr/bin/python*
  2. 别名:( alias python='/usr/bin/pythonxx'将此添加到. ~/.bashrc
  3. 重新登录或来源 . ~/.bashrc
  4. 再次检查python版本: python --version

  • 您应该添加脚本以修改 ~/.bashrc 中的默认值。然后你会让它永远工作。 (3认同)

小智 12

如果您的系统中有多个版本的 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
Run Code Online (Sandbox Code Playgroud)

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

现在使用以下命令更新 python 符号链接 -

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
Run Code Online (Sandbox Code Playgroud)


小智 9

首先检查你是否有一个python3.6文件夹?

ls /usr/bin/python3.6

如果你有“python3.6”文件夹,你就可以开始了。现在更新替代品

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
Run Code Online (Sandbox Code Playgroud)

然后更新python3的新配置

sudo update-alternatives --config python3
Run Code Online (Sandbox Code Playgroud)

最后,检查默认的python3版本:

python3 --version
Run Code Online (Sandbox Code Playgroud)


小智 6

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

只需在文件 ~/.bashrc : 中添加这一行alias python3="python3.6",然后关闭终端并打开一个新终端。现在,当您键入时,python3 xxx它会被翻译为python3.6 xxx.

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

编辑 :

正如Mikael Kjæ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
Run Code Online (Sandbox Code Playgroud)

正如这里看到的关于配置文件:

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

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
Run Code Online (Sandbox Code Playgroud)

  • 你可以设置 `ansible_python_interpreter` 变量来使用你的 python3.6。http://docs.ansible.com/ansible/latest/python_3_support.html (2认同)

小智 6

为 /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 /usr/bin/python.bak
# cp /usr/bin/python3 /usr/bin/python
# python --version
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)

  • 这破坏了 apt 安装程序。 (4认同)