Ubuntu22.04报错:ValueError: the symlink /usr/bin/python3 does not point to ...

目录

一、背景

二、如何解决呢?

三、解决步骤

[1. 确定可用的 Python 版本](#1. 确定可用的 Python 版本)

[2. 重新设置符号链接](#2. 重新设置符号链接)

[3. 选择默认版本](#3. 选择默认版本)

[4. 验证:](#4. 验证:)

[四、update-alternatives 详解](#四、update-alternatives 详解)

[1. 命令语法](#1. 命令语法)

[2. 常用选项](#2. 常用选项)

`--install`添加备选项。

`--config`:选择默认版本。

[3. 工作原理](#3. 工作原理)

[4. 示例用法](#4. 示例用法)

[5. 注意事项](#5. 注意事项)


一、背景

最近有同学在Ubuntu22.04上安装软件或执行程序报出以下错误:

ValueError: the symlink /usr/bin/python3 does not point to the python3 default version. It must be reset to point to python3.10。

这个错误很明显,这是一个Python错误,意思是软链接 /usr/bin/python3 没有指向 Python3 的默认版本。它必须重置为指向 Python3.10。

二、如何解决呢?

让/usr/bin/python3这个符号链接指向默认的 Python 3.10 版本就OK了。

在Debian系的系统(如Ubuntu)中可以使用update-alternatives这个软件版本管理工具。

三、解决步骤

1. 确定可用的 Python 版本

确保你系统中安装了 Python 3.10 版本或其他你想要使用的版本。你可以使用以下命令来查看已安装的 Python 版本:

bash 复制代码
ls /usr/bin/python*

这将列出系统中所有的 Python 可执行文件。

2. 重新设置符号链接

使用 `update-alternatives` 命令重新设置 `/usr/bin/python3` 符号链接。例如,如果你想要将其指向 Python 3.10,可以执行以下命令:

bash 复制代码
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1

这会将 Python 3.10 添加到可选列表中,并将其权重设置为 1。

3. 选择默认版本

使用以下命令选择默认的 Python 版本:

bash 复制代码
sudo update-alternatives --config python3

选择你想要作为默认的 Python 版本的编号。

4. 验证:

执行以下命令:

bash 复制代码
ls -l /usr/bin/python3

四、update-alternatives 详解

`update-alternatives` 是一个用于管理系统中软件版本的工具,允许用户在不同的备选项之间进行选择,以及设置默认的备选项。它通常用于系统中存在多个相似软件的情况,例如多个版本的编译器、解释器、JDK 等。

1. 命令语法

bash 复制代码
sudo update-alternatives [options]

2. 常用选项

`--install`添加备选项。

语法如下:

bash 复制代码
 sudo update-alternatives --install /path/to/link name path/to/binary priority
  • `/path/to/link`: 要设置的符号链接的路径。

  • `name`: 符号链接的名称。

  • `/path/to/binary`: 要链接到的实际可执行文件的路径。

  • `priority`: 优先级,用于确定默认选择。

例如:

bash 复制代码
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 100

`--config`:选择默认版本。

语法如下:

bash 复制代码
  sudo update-alternatives --config name

例如:

bash 复制代码
sudo update-alternatives --config java

`--display`:显示当前配置。

语法如下:

bash 复制代码
sudo update-alternatives --display name

例如:

bash 复制代码
 sudo update-alternatives --display java

`--remove`:从备选项列表中删除一个备选项。

语法如下:

bash 复制代码
  sudo update-alternatives --remove name path/to/binary

例如:

bash 复制代码
sudo update-alternatives --remove java /usr/lib/jvm/java-8-openjdk-amd64/bin/java

3. 工作原理

`update-alternatives` 实际上是通过在系统中创建符号链接的方式来管理备选项。这些符号链接通常位于 `/etc/alternatives` 目录下,而实际的可执行文件则可以位于不同的目录中。通过设置优先级,可以确定默认选择。

4. 示例用法

假设有多个 Python 版本,可以使用 `update-alternatives` 设置默认的 Python 版本:

bash 复制代码
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 2
sudo update-alternatives --config python3

这个例子中,通过 `--install` 选项添加了两个备选项,然后通过 `--config` 选项选择默认的 Python 版本。

5. 注意事项

  • 使用 `sudo` 运行 `update-alternatives` 命令,因为这些操作通常需要管理员权限。

  • 在配置完成后,符号链接会指向用户选择的默认备选项,使得系统中的软件可以引用该符号链接而不必关心具体的软件版本。

总的来说,`update-alternatives` 提供了一种灵活的方式来管理系统中的备选软件版本,让用户可以轻松切换默认版本。

相关推荐
apcipot_rain36 分钟前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A1 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持1 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang2 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰3 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc4 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
2035去旅行4 小时前
bootcmd 详细讲解
linux·嵌入式·arm·soc
陈希1235 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
蜗牛一步步往上爬5 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
女神下凡5 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范