【Python】ubuntu python>3.9编译安装,及多个Python版本并存的使用方法

【Python】ubuntu python3.9编译安装,及多个Python版本并存的使用方法

1. 安装依赖

更新系统软件
在正式开始之前,建议首先检查系统软件是否均为最新,并更新到最新版本。

打开一个终端,输入以下命令:

# 刷新软件包目录
sudo apt update
# 列出当前可用的更新
sudo apt list --upgradable
# 如上一步提示有可以更新的项目,则执行更新
sudo apt upgrade

安装 GCC 编译器
打开一个终端,使用 apt 安装 GCC 编译器:

安装 GCC 编译器
打开一个终端,使用 apt 安装 GCC 编译器:

可能需要的其他依赖:

# 刷新软件包目录
sudo apt update
# 安装依赖
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libbz2-dev liblzma-dev sqlite3 libsqlite3-dev tk-dev uuid-dev libgdbm-compat-dev

注意,Python 的部分功能依赖于对应的库(如 OpenSSL、SQLite3、LZMA 等),如果在编译时未能找到这些库,仍然可能完成编译。此时的 Python 解释器看似可以工作,但在需要使用特定功能时就会出问题。例如 OpenSSL 出现问题会导致无法正常使用 pip。故建议按本节提示安装所有可选依赖项,并在下一节编译时仔细检查有无报错信息。

2. 编译与安装

2.1 依赖与源获取

下载源代码地址
最好直接安装3.9以上,都是教训

下载 Python 3.10.12
sudo wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tar.xz
下载其他版本只需替换版本号数字

解压并进入该目录,后续的所有命令均在该目录中执行:

# 解压
tar -xf Python-3.10.12.tar.xz
# 进入该目录
cd Python-3.10.12/
2.2 配置
# 检查依赖与配置编译
sudo ./configure --enable-optimizations --with-lto --enable-shared

此处使用了三个可选配置项,含义如下:

–enable-optimizations:用 PROFILE_TASK 启用以配置文件主导的优化(PGO)
–with-lto:在编译过程中启用链接时间优化(LTO)
–enable-shared:启用共享 Python 库 libpython 的编译
更多可用配置项的信息,请参阅 Python 官方文档

在这里插入图片描述

2.3 编译
# 编译,-j 后面的数字为参与编译的CPU核心数,根据个人机器配置调整
sudo make -j 6

编译结束后,注意仔细查看一下输出,检查可能存在的错误:

# 一种可能出现的问题:
$ sudo make
# ......省略部分输出......
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm                  _tkinter              _uuid              
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
2.4 安装
# 安装二进制文件
sudo make altinstall

在这里插入图片描述
在这里插入图片描述

2.5 建立软连接 链接动态库

如果使用 sudo make install 直接安装就不需要,使用 # 安装二进制文件
sudo make altinstall 是需要的

● 原因:刚完成python3.10版本的安装后,默认路径在 /usr/local/bin 。并不方便查找
在这里插入图片描述
● 目的:建立python3.10专门的软连接,指定 python 指令找到刚安装的 python3.10。

  1. 删除原来的软连接
sudo rm -f /usr/bin/python3

删除后变成这样
在这里插入图片描述

  1. 在/usr/bin/目录创建软连接python,定向/usr/local/bin/python3.10

//因为是在bin底下生成的一个文件,所以需要用到超级用户权限sudo

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

在这里插入图片描述

3. 多版本兼容

[见blog python2与python3转换记录]

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-28 17:50:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-28 17:50:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-28 17:50:02       82 阅读
  4. Python语言-面向对象

    2023-12-28 17:50:02       91 阅读

热门阅读

  1. shell脚本调试技巧

    2023-12-28 17:50:02       56 阅读
  2. 群晖Nas Docker镜像自动部署

    2023-12-28 17:50:02       52 阅读
  3. django调用矩阵分解推荐算法模型做推荐系统

    2023-12-28 17:50:02       53 阅读
  4. 计算机专业校招常见面试题目总结

    2023-12-28 17:50:02       63 阅读
  5. 在 docker 中安装 GLEE

    2023-12-28 17:50:02       62 阅读
  6. Thinkphp5钩子和触发钩子

    2023-12-28 17:50:02       55 阅读
  7. Spring Boot整合RocketMQ

    2023-12-28 17:50:02       61 阅读
  8. CentOS:Nginx 413 Request Entity Too Large

    2023-12-28 17:50:02       57 阅读
  9. PHP cookie和Sessions

    2023-12-28 17:50:02       60 阅读
  10. CSRF和SSRF原理、区别、防御方法

    2023-12-28 17:50:02       57 阅读
  11. el-table 纵向垂直表头

    2023-12-28 17:50:02       59 阅读
  12. Linux:Vim

    2023-12-28 17:50:02       56 阅读
  13. K8s 之动态编排

    2023-12-28 17:50:02       60 阅读
  14. RivaGAN 水印项目

    2023-12-28 17:50:02       55 阅读