如何更改 Raspberry Pi 中的默认 Python 版本

use*_*495 4 python bash python-3.x raspberry-pi python-3.8

一天前,我全新安装了 Raspberry Pi OS Buster,然后按照本教程在我的 Raspberry Pi 中安装了 Python3.8。 https://installvirtual.com/how-to-install-python-3-8-on-raspberry-pi-raspbian/

我在 bashrc 中添加了 python 别名。

echo "alias python=/usr/local/bin/python3.8" >> ~/.bashrc
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

现在输入python终端显示 Python 3.8.0 (default, Jun 8 2020, 13:17:16)

但是当我运行 python3 时,它显示的是 Python Python 3.7.3

我在上面的命令中添加了指向 python3.8 的 python3 别名,但仍然没有运气。Geany 的程序仍然显示 3.7。我将 Geany 的 bulid 命令更改为 python(因为我将默认 python 设置为 3.8)

#!/usr/local/bin/python3.8

import sys
print("Python version")
print (sys.version)
Run Code Online (Sandbox Code Playgroud)

Python 版本 3.7.3(默认,2019 年 12 月 20 日,18:57:59)

我有两个问题:

  1. 如何在Python3.8中运行程序?

  2. 我可以卸载python3.7吗?

Cam*_*ind 9

我还没有看到 Raspberry Pi 基金会关于更改活跃的 Python 版本的“官方”解决方案。

我不会讨论为什么您可能不应该使用别名来运行python,但会回答更重要的标题问题。

看来我们想为二进制文件添加我们想要的“替代品”版本python

在全新安装 Raspberry Pi 操作系统时,您只需要一个命令:

# Adds `python3` as the alternate for `python` with priority `3`.
sudo update-alternatives --install $(which python) python $(readlink -f $(which python3)) 3
Run Code Online (Sandbox Code Playgroud)

您还可以添加任意数量的其他替代方案python

# Adds `python3.8` as the alternate for `python` with priority `3`.
sudo update-alternatives --install $(which python) python $(readlink -f $(which python3.8)) 3
Run Code Online (Sandbox Code Playgroud)

为了友善起见,您可能还应该python2以较低的优先级添加 , :

# Adds `python2` as the alternate for `python` with priority `2`.
sudo update-alternatives --install $(which python) python $(readlink -f $(which python2)) 2
Run Code Online (Sandbox Code Playgroud)

默认情况下,上面将自动选择最高优先级的替代方案。要手动选择系统范围的版本,请使用:

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

您可以选择适合您需求的不同优先级。然而,我注意到许多其他“替代品”(特别是)通常使用官方建议版本editor的倍数。10保持较低的优先级值可能意味着官方实现(如果发生)将是兼容的。您也可以选择更大的数字...

笔记

dpkg -S /usr/bin/python报告它属于python-minimal,但卸载会python2从计算机中删除所有内容(带有autoremove)。python3-minimal也没有解决任何问题。


Joh*_*ley 8

对于那些喜欢直接使用文件系统的人,这是我所做的:

  • 类型:sudo rm /usr/bin/python
  • 类型:sudo ln -s /usr/bin/python3 /usr/bin/python
  • 类型:ls -l /usr/bin/python
    • lrwxrwxrwx 1 root root 16 Jan 18 11:04 /usr/bin/python -> /usr/bin/python3
  • 类型:python -V
    • 蟒蛇 3.7.3
  • 替代方式:
    • 类型:sudo update-alternatives --config python
    • 在我的情况下,没有找到替代品......

在此过程中,将 pip 默认更改为 pip3,过程略有不同...

  • 类型:sudo mv /usr/bin/pip /usr/bin/pip2 # 重命名
  • 类型:sudo ln -s /usr/bin/pip3 /usr/bin/pip
  • 类型:ls -l /usr/bin/pip
    • lrwxrwxrwx 1 root root 13 Jan 18 11:19 /usr/bin/pip -> /usr/bin/pip3
  • 类型:pip -V
    • 来自 /usr/lib/python3/dist-packages/pip (python 3.7) 的 pip 18.1
    • 注意:pip2 被切换到默认的 python3 弄糊涂了,因为它开始于:#!/usr/bin/python

  • 恕我直言,应该指出的是,对于分发工具和数据的健全性来说,手动处理原本通过包分发机制处理的组件配置通常是一个坏主意。在此请小心行事。 (2认同)