【Linux】系统升级后python虚拟环境失效

问题

今天心血来潮,将机器的ubuntu22.04升级到了ubuntu24.04,部分插件不能用了不说,最要紧的是之前项目的python虚拟环境都失效了,都是提示解释器无效

问题分析

通过查看虚拟环境中的python,可以发现其中三个可执行程序python,python3,python3.10
image
可以发现后两个可执行程序都是软连接到python,而他又是指向/usr/bin/python3.10

但是通过查找python3.10,发现系统已经没有了。
怀疑是当初升级的时候,选择了清除过期的软件包导致的。

问题解决

0. 添加PPA

通过包管理器添加PPA,之后apt直接安装即可!后续步骤不需要再看了!

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

执行完毕后,可以直接通过apt下载所需要的版本

sudo apt install python3.X python3.X-distutils python3.X-dev

终端执行python3.X即可切换到所需要的版本

对于其中的X,可以发现实际上每个ubuntu版本都缺少一个python,这是因为系统版本有一个内置的恰好为所确实的那个python3.X。

- Ubuntu 20.04 (focal) Python3.5 - Python3.7, Python3.9 - Python3.13
- Ubuntu 22.04 (jammy) Python3.7 - Python3.9, Python3.11 - Python3.13
- Ubuntu 24.04 (noble) Python3.7 - Python3.11, Python3.13

1. 下载python3.10

python官方下载python3.10.15

2. 安装python3.10

通过查看源码包中的readme.rst文件,找到安装步骤:
image

直接按照上述规则进行安装会导致缺少ssl支持,无法使用pip安装以及依赖ssl运行的库例如urllib、requests等

会导致比如以下的错误

no module named _ssl

image

因此在配置的时候要加上--with-ssl参数

./configure --with-ssl

按照上述步骤进行安装

3. 设置python3.10 软连接

安装完成后,再终端输入

$ python3.10
Python 3.10.15 (main, Nov  4 2024, 15:12:54) [GCC 13.2.0] on linux

表明已经成功安装,但是发现虚拟环境中的python仍然存在问题。此时查看python3.10的安装位置,发现其只在/usr/local/bin/python3.10,而之前虚拟环境软连接的解释器位置在/usr/bin/python3.10

此时不需要将所有虚拟环境中的软连接位置进行修改,由于压根不存在/usr/bin/python3.10,我们只需要将其软连接至/usr/local/bin/python3.10即可。

$ sudo ln -s /usr/local/bin/python3.10 /usr/bin/python3.10

至此,虚拟环境恢复正常,且此时已经安装了多个版本

4. 恢复默认python3 软连接

在安装python3.10的文档中,我们发现了This will install Python as python3.

但是实际上系统默认的python3python3.12

为了防止出现不必要的问题,还是将原本的python3命令进行恢复。

首先查看了python3位置,发现/usr/bin/python3,/usr/local/bin/python3

分别对其进行ls - l 发现前者没有被修改,后者软连接至3.10版本了。

那么我们就只对于后边的进行复原,恢复至3.12的版本

jomheo@Jomheo:~$ sudo rm /usr/local/bin/python3
jomheo@Jomheo:~$ sudo ln -s /usr/bin/python3.12 /usr/local/bin/python3

需要首先删除掉原有的软连接,不然就会报错

jomheo@Jomheo:~$ sudo ln -s /usr/bin/python3.12 /usr/local/bin/python3
ln: 无法创建符号链接 '/usr/local/bin/python3': 文件已存在

5. 后记

在某天,我需要暂时使用一下jupyter的时候报错了
image

后来查询资料发现是需要首先

sudo apt install libffi-dev

之后再重新编译安装上述过程

posted @ 2024-11-04 15:49  TICSMC  阅读(66)  评论(0)    收藏  举报