Python使用总结之Linux部署python3环境

Python使用总结之Linux部署python3环境

在进行python环境搭建的时候,我们通常需要执行大量的命令行语句,一不小心输错,还得搞半天,这里是一个可以一键安装的sh脚本,基于centos8.2。安装的python版本可以自己修改,我这里是3.12.4

1. 新建sh文件

新建sh文件后,将脚本内容复制进去。

复制代码
vi setup_python3.12.sh

脚本内容如下:

sh 复制代码
#!/bin/bash

# 脚本名称: setup_python3.12_centos8.sh
# 描述: 在CentOS 8.2上编译安装Python 3.12及其开发环境 (优化国内源)
# 作者: Gemini
# 日期: 2025年6月12日 (更新日期)

echo "开始在CentOS 8.2上设置Python 3.12环境..."

# 0. 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo "此脚本需要root权限或sudo权限来运行。请使用 'sudo ./setup_python3.12.sh'。"
    exit 1
fi

# 1. 更新系统并安装必要的编译依赖
echo "1. 更新系统并安装必要的编译依赖..."
# 再次强调:这里假设您已经通过上述步骤将dnf仓库切换到国内vault源并确保可用。
# 如果dnf update仍然失败,请先手动解决仓库问题。
sudo dnf update -y || { echo "dnf update 失败,请检查网络和dnf仓库配置(CentOS 8 EOL问题)。"; exit 1; }

# 再次确保zlib-devel和其他关键依赖已安装
sudo dnf install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel \
    readline-devel sqlite-devel libuuid-devel gdbm-devel tk-devel \
    make git wget || { echo "安装必要依赖失败,退出。"; exit 1; }

# 额外检查 zlib-devel 是否真的安装成功
if ! rpm -q zlib-devel &>/dev/null; then
    echo "错误:zlib-devel 未安装成功。请手动运行 'sudo dnf install -y zlib-devel' 并解决可能的问题。"
    exit 1
fi
echo "zlib-devel 已确认安装。"

# 2. 创建一个用于存放Python源代码的目录
echo "2. 创建一个用于存放Python源代码的目录..."
PYTHON_INSTALL_DIR="/opt/python3.12_src"
mkdir -p "$PYTHON_INSTALL_DIR"
cd "$PYTHON_INSTALL_DIR" || { echo "无法进入目录 $PYTHON_INSTALL_DIR,退出。"; exit 1; }

# 3. 下载Python 3.12的源代码 (使用国内镜像源示例)
PYTHON_VERSION="3.12.4"
PYTHON_TARBALL="Python-$PYTHON_VERSION.tgz"

# *** 请注意:以下是示例国内镜像URL,你需要根据实际情况修改 ***
# 访问例如阿里云或华为云镜像站点的Python下载区,找到对应版本
# 例如:https://mirrors.aliyun.com/python/
# 或者:https://mirrors.huaweicloud.com/python/
PYTHON_DOWNLOAD_URL="https://mirrors.aliyun.com/python/$PYTHON_VERSION/$PYTHON_TARBALL"
# 如果阿里云没有,可以尝试清华源(TUNA),但通常其PyPI镜像更常用,文件下载可能需要深挖
# PYTHON_DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/archive/python/3.12.4/Python-3.12.4.tgz" # 示例,可能路径不准确

echo "3. 下载Python $PYTHON_VERSION 源代码 (尝试使用国内源)..."
wget -q "$PYTHON_DOWNLOAD_URL"
if [ $? -ne 0 ]; then
    echo "下载 Python $PYTHON_VERSION 源代码失败,请检查下载地址或网络连接。"
    echo "下载URL: $PYTHON_DOWNLOAD_URL"
    echo "建议手动检查国内Python镜像站点,如阿里云、华为云或清华大学TUNA,获取正确的下载链接。"
    exit 1
fi

# 4. 解压源代码
echo "4. 解压源代码..."
tar -xf "$PYTHON_TARBALL"
if [ $? -ne 0 ]; then
    echo "解压 Python $PYTHON_TARBALL 失败,退出。"
    exit 1
fi

# 5. 进入解压后的目录并编译安装
PYTHON_SRC_DIR="Python-$PYTHON_VERSION"
echo "5. 进入解压后的目录并编译安装Python $PYTHON_VERSION..."
cd "$PYTHON_SRC_DIR" || { echo "无法进入源代码目录 $PYTHON_SRC_DIR,退出。"; exit 1; }

# 新增:清理之前可能存在的编译产物,确保全新编译
echo "清理旧的编译产物(如果有)..."
make clean > /dev/null 2>&1
rm -f Makefile config.log config.status Modules/Setup
rm -rf build Python/sysconfig.py
echo "旧的编译产物清理完成。"

# 配置编译选项
INSTALL_PATH="/usr/local/python$PYTHON_VERSION"
echo "开始配置 Python 编译,安装路径为: $INSTALL_PATH"
./configure --prefix="$INSTALL_PATH" --enable-optimizations --with-ensurepip=install

if [ $? -ne 0 ]; then
    echo "配置 Python 编译失败,退出。"
    echo "请检查 config.log 文件获取更多错误信息: $PYTHON_INSTALL_DIR/$PYTHON_SRC_DIR/config.log"
    grep -i "zlib" config.log
    exit 1
fi

echo "配置成功。检查 config.log 中 zlib 相关信息(仅供参考):"
grep -i "zlib" config.log

# 编译和安装
echo "开始编译 Python (这可能需要一些时间,利用所有CPU核心)..."
make -j$(nproc)
if [ $? -ne 0 ]; then
    echo "编译 Python 失败,退出。"
    exit 1
fi

echo "开始安装 Python 到 $INSTALL_PATH..."
sudo make altinstall
if [ $? -ne 0 ]; then
    echo "安装 Python 失败,退出。"
    echo "错误信息提示 'zipimport.ZipImportError: can't decompress data; zlib not available' 意味着 zlib 库在安装 ensurepip 时不可用。"
    echo "请确认 zlib-devel (以及 zlib 运行时库) 已正确安装并且 configure 步骤检测到了它。"
    exit 1
fi

echo "Python $PYTHON_VERSION 已成功安装到 $INSTALL_PATH"

# 6. 配置软链接
echo "6. 配置软链接以便于访问 Python 3.12..."
PYTHON_BIN="$INSTALL_PATH/bin/python$PYTHON_VERSION"
PIP_BIN="$INSTALL_PATH/bin/pip$PYTHON_VERSION"

if [ -f "$PYTHON_BIN" ]; then
    sudo ln -sf "$PYTHON_BIN" /usr/local/bin/python3.12
    echo "软链接 /usr/local/bin/python3.12 -> $PYTHON_BIN 已创建."
else
    echo "警告: Python 可执行文件未找到在 $PYTHON_BIN,无法创建软链接."
fi

if [ -f "$PIP_BIN" ]; then
    sudo ln -sf "$PIP_BIN" /usr/local/bin/pip3.12
    echo "软链接 /usr/local/bin/pip3.12 -> $PIP_BIN 已创建."
else
    echo "警告: pip 可执行文件未找到在 $PIP_BIN,无法创建软链接."
fi

# 7. 验证安装
echo "7. 验证 Python 3.12 安装..."
/usr/local/bin/python3.12 --version
/usr/local/bin/pip3.12 --version

if [ $? -eq 0 ]; then
    echo "Python 3.12 环境搭建成功!"
    echo "你可以通过 'python3.12' 命令来启动 Python 3.12 解释器。"
    echo "你可以通过 'pip3.12' 命令来安装 Python 包。"
else
    echo "Python 3.12 安装验证失败,请检查上述步骤。"
fi

# 8. 清理下载的源代码 (可选)
echo "8. 清理下载的源代码..."
cd "$PYTHON_INSTALL_DIR" && cd ..
rm -rf "$PYTHON_INSTALL_DIR"
echo "清理完成。"

echo "脚本执行完毕。"

2.为脚本添加可执行权限

复制代码
chmod +x setup_python3.12.sh

3.执行安装脚本

复制代码
./setup_python3.12.sh

过程中可能会还会遇到一些环境错误,不过通过脚本已经解决了很多问题,其他问题请自行查询解决,另外这个脚本好像没有创建指向python3的软连接,可以通过下列方式排查执行。

4. 确认安装成功

复制代码
ls -l /usr/local/python3.12.4/bin/python3.12
ls -l /usr/local/python3.12.4/bin/pip3.12

5. 手动创建软连接

复制代码
sudo ln -sf /usr/local/python3.12.4/bin/python3.12 /usr/local/bin/python3.12
sudo ln -sf /usr/local/python3.12.4/bin/pip3.12 /usr/local/bin/pip3.12

6. 确认生效

复制代码
ls -l /usr/local/bin/python3.12
ls -l /usr/local/bin/pip3.12

7.配置python3命令执行

复制代码
sudo rm -f /usr/bin/python3  # 如果存在,先删除旧的软链接
sudo ln -s /usr/local/python3.12.4/bin/python3.12 /usr/bin/python3

以上,就可以和python一起愉快的玩耍了~

相关推荐
泽02027 分钟前
C++之list的自我实现
开发语言·数据结构·c++·算法·list
斗转星移327 分钟前
c++默认类模板参数
开发语言·c++
肥肥呀呀呀29 分钟前
flutter 的lottie执行一次动画后关闭
开发语言·flutter
福理原乡大王31 分钟前
Linux信号详解
linux·运维·服务器·c++·ubuntu·信号处理
xiaohanbao0938 分钟前
day54 python对抗生成网络
网络·python·深度学习·学习
锅锅是锅锅41 分钟前
ubuntu调整硬盘大小-使用gparted
linux·ubuntu·硬盘·gparted
爬虫程序猿42 分钟前
利用 Python 爬虫按关键字搜索 1688 商品
开发语言·爬虫·python
英杰.王1 小时前
深入 Java 泛型:基础应用与实战技巧
java·windows·python
tiandyoin1 小时前
如何给 C:\Windows\WinSxS\ 瘦身?
c语言·开发语言·windows
Leaf吧1 小时前
java BIO/NIO/AIO
java·开发语言·nio