1 准备
1.1 Debian/Ubuntu 系列环境
$ sudo apt update && \
sudo apt install -y \
build-essential \
bzip2 \
curl \
g++ \
gcc \
libbz2-dev \
libdb-dev \
libffi-dev \
libgdbm-dev \
liblzma-dev \
libncurses5-dev \
libnsl-dev \
libnss3-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libtirpc-dev \
libzstd-dev \
make \
openssl \
pkg-config \
pv \
python3-tk \
tk-dev \
xz-utils \
zlib1g-dev \
&& echo 'OK'
1.2 RHEL/CentOS 系列环境
$ sudo yum install -y \
bzip2-devel \
curl \
gcc \
gcc-c++ \
make \
gdbm-devel \
libffi-devel \
libnsl2-devel \
libuuid-devel \
make \
ncurses-devel \
openssl-devel \
pv \
readline-devel \
sqlite-devel \
tk-devel \
xz-devel \
zlib-devel \
&& echo 'OK'
2 编译
指定要安装的版本:
$ export python_version='3.12.12'
下载源码并编译:
$ command -v -V curl && \
command -v -V make && \
command -v -V pv && \
command -v -V tar && \
command -v -V xz && \
tmpdir="$(mktemp -d)" && \
cd "${tmpdir:?}" && \
curl -fLO "https://www.python.org/ftp/python/${python_version:?}/Python-${python_version:?}.tar.xz" && \
pv "Python-${python_version:?}.tar.xz" | xz -cdk - | tar -x && \
mkdir -p "${HOME}/Applications/Python-${python_version:?}" && \
cd "${tmpdir:?}/Python-${python_version:?}/" && \
./configure \
--prefix="${HOME}/Applications/Python-${python_version:?}" \
--enable-optimizations \
--enable-loadable-sqlite-extensions && \
make -j8 build_all && \
echo "Compile process is finished, run command below to install." && \
echo " $ make -j8 altinstall"
3 安装
$ make -j8 altinstall
4 其他
4.1 配置国内更新源
$ if [ ! -f "${HOME}/.pip/pip.conf" ]; then \
mkdir -p "${HOME}/.pip/" && \
{ \
echo '[global]' && \
echo 'index-url = https://mirrors.huaweicloud.com/repository/pypi/simple' && \
echo 'trusted-host = mirrors.huaweicloud.com' && \
echo 'timeout = 120' && \
true; } | tee "${HOME}/.pip/pip.conf"; \
else \
echo '[WARN] ${HOME}/.pip/pip.conf: already exists'; \
fi