Python 编译安装

Python 是一种高级编程语言,用于快速开发 Web 应用程序、脚本、桌面应用程序和数据分析。

安装依赖

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

apt update && apt upgrade

然后安装编译 Python 所需的依赖。

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 pkg-config -y

编译与安装

以 Python 3.12 为例。

下载源代码

Python3.12 官网下载界面 下载 Python 3.12 的源代码

解压

tar -xf Python-3.12.2.tar.xz
cd Python-3.12.2

创建安装目录

mkdir /usr/local/program/python

配置

检查依赖与编译配置

./configure --prefix=/usr/local/program/python --enable-optimizations --enable-shared

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

--prefix=/usr/local/program/python:设定 python3.12 的安装目录

--enable-optimizations:启用 PROFILE_TASK 以配置文件主导的优化(PGO)

--enable-shared:启用共享 Python 库 libpython 的编译

更多可用配置项的信息,请参阅 Python 官方文档

经过一系列检查无误之后,会自动生成 Makefile ,即可进行下一步的编译了。

编译

make

编译耗时较长,如果配置足够,可以使用  -j  选项指定参与编译的 CPU 核心数,假如为 12 核 CPU:

make -j 12

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

# 一种可能出现的问题:
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.

如果出现类似如上的警告,说明编译时有部分软件包不可用,导致编译出的 Python 有部分可选模块不可用。检查上一节中提到的依赖是否都已安装,或求助于网络搜索引擎,安装对应软件包后再次编译即可。

安装

make altinstall

在 Makefile 中有如下提示:

If you have a previous version of Python installed that you don’t want to overwrite, you can use “make altinstall” instead of “make install”.

故应使用 altinstall 而不是 install 。二者的一个重要区别在于,后者会创建符号链接,将 python3 等命令链接到正在安装的新版 Python3 上,这可能会破坏系统。更多信息请参阅当前目录下的 README.rst 文件。

也可以使用 make && make altinstall 一步到位

链接动态库

添加 Python3.12 动态库路径至 /etc/ld.so.conf.d/python.conf

touch /etc/ld.so.conf.d/python.conf
echo "/usr/local/program/python/lib" > /etc/ld.so.conf.d/python.conf

更新动态库

ldconfig

创建软连接

ln -s /usr/local/program/python/bin/python3.12 /usr/local/bin/python
ln -s /usr/local/program/python/bin/pip3.12 /usr/local/bin/pip

验证

python -V
pip -V

配置

更换清华源

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

更换缓存位置

pip config set global.cache-dir "/path/to"

pip 常用命令

pip install <包名> # 安装包

pip uninstall <包名> # 卸载包

pip list # 查看已安装的包

pip list --not-require # 查看不被其他包依赖的包(即可卸载的包)

pip list -o # 查看可更新的包

pip install --upgrade <包名> # 更新包