以下是在已经进入 ubuntu:22.04 容器内部后手动安装python3.12的步骤:
1、安装编译依赖
apt update && apt install -y \
build-essential \
zlib1g-dev \
libncurses5-dev \
libgdbm-dev \
libnss3-dev \
libssl-dev \
libreadline-dev \
libffi-dev \
libbz2-dev \
libncursesw5-dev \
libsqlite3-dev \
libdb5.3-dev \
libexpat1-dev \
liblzma-dev \
tk-dev \
wget
2、下载Python 3.12 源码
cd /tmp
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
tar -xf Python-3.12.0.tar.xz
cd Python-3.12.0
3、配置、编译并安装
# 配置(优化安装路径)
./configure --enable-optimizations --prefix=/usr/local/python3.12
# 编译(使用所有 CPU 核心加速)
make -j$(nproc)
# 安装到 /usr/local/python3.12
make install
4、创建符号链接(可选)
# 将 python3.12 添加到系统路径
ln -s /usr/local/python3.12/bin/python3.12 /usr/local/bin/python3.12
# 验证安装
python3.12 --version
# 输出:Python 3.12.0
5、安装pip
# 下载 get-pip.py
wget https://bootstrap.pypa.io/get-pip.py
# 用 Python 3.12 安装 pip
python3.12 get-pip.py
# 验证 pip
pip3.12 --version
注:如遇明明已经安装pip,但提示没有pip命令。原因是pip被安装到了某目录下(如/usr/local/python3.12/bin),但该目录不在系统的环境变量PATH中,导致无法直接运行pip或pip3.12命令。
- 解决方法:
-
- 临时解决方法(当前会话有效):
export PATH="/usr/local/python3.12/bin:$PATH"
-
- 永久解决方案
echo 'export PATH="/usr/local/python3.12/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
-
- 之后检查是否生效
which pip3.12 # 应该返回 /usr/local/python3.12/bin/pip3.12
6、清理临时文件(可选)
这行可不执行,由于后续如果需要重新编译python,需要这个文件夹
rm -rf /tmp/Python-3.12.0*
注意点:
将python添加到环境变量中。
如遇到使用python
命令进入不去python环境,而python3.12能进入环境,原因是python命令没有添加到环境变量中。
解决方法:
方案1:创建符号链接(推荐)
# 检查python3.12实际安装路径
which python3.12 # 通常输出如 /usr/bin/python3.12 或/usr/local/bin/python3.12
# 创建全局符号链接(需sudo权限)
sudo ln -s $(which python3.12) /usr/bin/python
# 验证命令
python --version # 应输出 python 3.12.x
方案2:修改shell配置文件
# 在~/.bashrc 或 ~/.zshrc 末尾添加别名
echo 'alias python=python3.12' >> ~/.bashrc
# 使配置生效
source ~/.bashrc
# 验证
python --version