Python在Linux上需要单独编译源码,这里大概记录一下操作流程:
提前准备:
Python3.10 tgz包 地址:https://www.python.org/downloads/source/
1. 更新软件包
sudo apt update # 更新软件包列表,检查可用的软件包更新
sudo apt upgrade # 安装可用的软件包更新
2. 安装构建Python源所需的依赖包:
sudo apt install 指定软件包
# 例:
# sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
# 可同时安装多个
参考:
Ubuntu 18.04 下源代码安装的python3.6.6缺少部分库的问题,总结,方便以后处理同类问题参考
附模块&包关系表(其他请自行搜索):
模块 | 安装包名 |
---|---|
_ctypes | libffi-dev |
_bz2 | libbz2-dev |
_curses和_curses_panel | libncursesw5-dev |
_dbm和_gdbm | libgdbm-dev |
_lzma | liblzma-dev |
_sqlite3 | libsqlite3-dev |
_tkinter | tk-dev |
_uuid | uuid-dev |
readline | libreadline-dev |
3. 查看openssl包:
python3.10要求openssl版本1.1.1以上
openssl version
> OpenSSL 1.1.1n 15 Mar 2022
4. 创建python安装目录
mkdir /安装路径/python3.10
5. 解压tgz
tar -xvf Python-3.10.0.tgz
6. 执行配置文件(在tgz解压目录下)
cd /解压包路径/Python-3.10.0
./configure --prefix=/安装路径/python3.10
#根据提示执行如下代码对python解释器进行优化
#执行后无序额外配置可直接使用python3调用python编辑器
./configure --enable-optimizations
7. 编译&安装
7.1 make编译
# make是在解压后目录下进行的
make
# make速度取决于机器性能
make 完成后可能会提示缺少模块 ,此刻执行7.2
7.2 缺少模块(未缺少或已完成跳过此步骤)
7.2.1 查看缺少模块类型
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2 _curses _curses_panel
_dbm _gdbm _lzma
_sqlite3 _tkinter _uuid
readline zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
# 空则为无
The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc pwd time
Failed to build these modules:
_ctypes
主要看第一部分和第三部分,第三部分为必须添加模块,第一部分酌情添加。
有其他模块问题自行搜索添加,这里只给出范例
7.2.2 安装模块,重新编译
# 此刻需要重新make编译,先清理一下原有代码
make clean
# 根据步骤2安装模块,并重新按流程执行配置
./configure --prefix=/安装路径/python3.10
# 然后make……
# 部分模块不是重要的,可以忽略
# (_dbm这个就消不掉
7.3 编译完成
make install
# 安装
8. 查看python版本
因为前面选择自动配置,这里不需手工配置路径
python3 --version
> Python 3.10.0
pip3 --version
> pip 21.2.3 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
#升级pip版本(可选)
pip3 install --upgrade pip