当前位置: 首页 > news >正文

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

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

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

1. 新建sh文件

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

vi setup_python3.12.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 ]; thenecho "此脚本需要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; thenecho "错误: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 ]; thenecho "下载 Python $PYTHON_VERSION 源代码失败,请检查下载地址或网络连接。"echo "下载URL: $PYTHON_DOWNLOAD_URL"echo "建议手动检查国内Python镜像站点,如阿里云、华为云或清华大学TUNA,获取正确的下载链接。"exit 1
fi# 4. 解压源代码
echo "4. 解压源代码..."
tar -xf "$PYTHON_TARBALL"
if [ $? -ne 0 ]; thenecho "解压 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=installif [ $? -ne 0 ]; thenecho "配置 Python 编译失败,退出。"echo "请检查 config.log 文件获取更多错误信息: $PYTHON_INSTALL_DIR/$PYTHON_SRC_DIR/config.log"grep -i "zlib" config.logexit 1
fiecho "配置成功。检查 config.log 中 zlib 相关信息(仅供参考):"
grep -i "zlib" config.log# 编译和安装
echo "开始编译 Python (这可能需要一些时间,利用所有CPU核心)..."
make -j$(nproc)
if [ $? -ne 0 ]; thenecho "编译 Python 失败,退出。"exit 1
fiecho "开始安装 Python 到 $INSTALL_PATH..."
sudo make altinstall
if [ $? -ne 0 ]; thenecho "安装 Python 失败,退出。"echo "错误信息提示 'zipimport.ZipImportError: can't decompress data; zlib not available' 意味着 zlib 库在安装 ensurepip 时不可用。"echo "请确认 zlib-devel (以及 zlib 运行时库) 已正确安装并且 configure 步骤检测到了它。"exit 1
fiecho "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" ]; thensudo ln -sf "$PYTHON_BIN" /usr/local/bin/python3.12echo "软链接 /usr/local/bin/python3.12 -> $PYTHON_BIN 已创建."
elseecho "警告: Python 可执行文件未找到在 $PYTHON_BIN,无法创建软链接."
fiif [ -f "$PIP_BIN" ]; thensudo ln -sf "$PIP_BIN" /usr/local/bin/pip3.12echo "软链接 /usr/local/bin/pip3.12 -> $PIP_BIN 已创建."
elseecho "警告: pip 可执行文件未找到在 $PIP_BIN,无法创建软链接."
fi# 7. 验证安装
echo "7. 验证 Python 3.12 安装..."
/usr/local/bin/python3.12 --version
/usr/local/bin/pip3.12 --versionif [ $? -eq 0 ]; thenecho "Python 3.12 环境搭建成功!"echo "你可以通过 'python3.12' 命令来启动 Python 3.12 解释器。"echo "你可以通过 'pip3.12' 命令来安装 Python 包。"
elseecho "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一起愉快的玩耍了~

http://www.xdnf.cn/news/995707.html

相关文章:

  • 【测试开发】数据类型篇-列表推导式和字典推导式
  • Vue3+TypeScript实现责任链模式
  • XML 注入与修复
  • 接口测试不再难:智能体自动生成 Postman 集合
  • Apache 反向代理Unity服务器
  • Golang启用.exe文件无法正常运行
  • NGINX 四层 SSL/TLS 支持ngx_stream_ssl_module
  • vue3集成高德地图绘制轨迹地图
  • 鸿蒙 UI 开发基础语法与组件复用全解析:从装饰器到工程化实践指南
  • uni-app 小程序 Cannot read property ‘addEventListener‘ of undefined, mounted hook
  • 一.干货干货!!!SpringAI入门到实战-小试牛刀
  • 山东大学《Web数据管理》期末复习宝典【万字解析!】
  • Mac 系统 Node.js 安装与版本管理指南
  • 使用Gitlab CI/CD结合docker容器实现自动化部署
  • React 集中状态管理方案
  • CentOS变Ubuntu后后端程序SO库报错,解决方案+原理分析!
  • .NET 中的异步编程模型
  • [电赛]MSPM0G3507学习笔记(二) GPIO:led与按键(流水灯、呼吸灯,短按长按与双击,ui预览)
  • 基于OpenCV和深度学习实现图像风格迁移
  • VR 地震安全演练:“透视” 地震,筑牢企业安全新护盾​
  • 16层混压PCB的精密重构:高频基板局部化的黄金法则
  • 【Go-补充】实现动态数组:深入理解 slice 与自定义实现
  • 机器学习 [白板推导](六)[核方法、指数族分布]
  • 【WebSocket】WebSocket架构重构:从分散管理到统一连接的实战经验
  • 新零售视域下实体与虚拟店融合的技术逻辑与商业模式创新——基于开源AI智能名片与链动2+1模式的S2B2C生态构建
  • C#事件基础模型代码
  • 【技术追踪】MMFusion:用于食管癌淋巴结转移诊断的多模态扩散模型(MICCAI-2024)
  • Linux部署bmc TrueSight 监控agent步骤
  • Java学习笔记之:初识nginx
  • js判断手机操作系统(ios、安卓、华为)