01.更新软件包列表并且安装编译 Python 所必要的软件包:
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget
02. 下载相应版本的python源码,并解压在任意目录
https://www.python.org/downloads/
03. 切换到 Python 源码目录,并且执行configure
脚本,他会执行一系列检测,并且确保所有依赖都在你的系统上准备好了:
cd Python-xxxx
./configure --enable-optimizations --enable-loadable-sqlite-extensions --with-openssl=/usr/local/openssl
其中:
--enable-optimizations:通过多个测试优化 python 二进制包。这会导致编译过程变慢。
--with-openssl=/usr/local/openssl:指定openssl的安装目录,注意确保openssl路径正确。如果openssl配置错误,使用python和pip时会出现“Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available)”错误。
在python源码目录内的“Modules/Setup”文件中搜索“_socket socketmodule.c”,打开以下注释(以python 3.10.4为例):
--enable-loadable-sqlite-extensions:打开sqlite可选项。如果打开了该选项,请确保在python源码目录内的“setup.py”文件中关于的sqlite配置正确。
在“setup.py”文件中查找字段“sqlite_inc_paths”,检查sqlite相关配置是否正确。
根据环境的不同,也许需要添加以下路径:
/usr/local/sqlite3/include
/usr/local/sqlite3/include/sqlite3
04.开始 Python 的编译处理:
make -j 8
想要缩短编译事件,修改-j
来适配你的处理器数量。可以通过输入nproc
来找到处理器的数量。
05. 当编译完成后,通过输入下面的命令安装 Python 二进制包
sudo make altinstall
不要使用标准的make install
因为它会覆盖默认的系统 python 二进制包
参考:
如何在 Ubuntu 18.04上安装 Python 3.8 - 云+社区 - 腾讯云
解决Python3 No module named '_sqlite3'错误 - 简书
python3.7安装后ssl问题 - 云+社区 - 腾讯云