温馨提示×

Python在CentOS上安装需要注意什么

小樊
43
2025-12-31 10:56:36
栏目: 编程语言

CentOS 上安装 Python 的关键注意事项

一 系统兼容性与版本选择

  • 不要删除或替换系统自带的 Python 2.7(尤其在 CentOS 7 上,yum 等系统工具强依赖它);新增的 Python 3 应与系统版本并行存在,使用明确的命令如 python3 / pip3 调用。
  • 选择版本时权衡需求与仓库支持:如 CentOS 7 的默认仓库通常仅到 Python 3.6,若项目需要 3.8/3.9/3.11 等新特性,建议源码编译或使用 pyenv 管理多版本。
  • 多版本共存时,避免用“python”这个无版本号命令,优先使用带版本号的二进制或通过工具(如 alternatives / pyenv)进行切换。

二 安装方式与路径管理

  • 三种常用方式:
    1. yum/dnf 安装(省心、稳定,版本受限);
    2. 源码编译(可控性高,适合新版本或定制选项);
    3. pyenv(用户态多版本管理,避免污染系统)。
  • 源码编译要点:
    • 安装编译依赖:gcc、make、openssl-devel、zlib-devel、bzip2-devel、readline-devel、sqlite-devel、libffi-devel、ncurses-devel、gdbm-devel、tk-devel、xz-devel 等。
    • 配置与安装:常用选项如 –enable-optimizations --enable-shared --with-system-ffi --with-ensurepip=install;编译用 make -j $(nproc);安装务必用 make altinstall,避免覆盖系统 /usr/bin/python
    • 若启用 –enable-shared,需确保动态库可被找到:将 /usr/local/lib 加入 /etc/ld.so.conf.d/python3.x.conf 并执行 ldconfig
  • 路径与软链接:自定义安装前缀(如 /usr/local)时,注意将 /usr/local/bin 加入 PATH;如需提供全局的 python3/pip3 命令,可创建软链接或用 alternatives 做版本切换,避免直接改动 /usr/bin/python

三 多版本共存与系统工具保护

  • 保持系统工具可用:在 CentOS 7 上,/usr/bin/yum/usr/libexec/urlgrabber-ext-down 的首行通常指向 /usr/bin/python2.7。若曾误改默认 python,需恢复为 python2.7,否则 yum 将因语法不兼容而失败。
  • 推荐的切换方式:
    • 使用 alternatives 管理 /usr/bin/python3 的默认指向;
    • 或在用户环境设置别名(如 alias python=python3),仅对当前用户生效,避免影响系统脚本。

四 虚拟环境与依赖管理

  • 始终优先使用 venv 创建隔离环境:在项目目录执行 python3.x -m venv .venv && source .venv/bin/activate,避免不同项目的包冲突。
  • 安装依赖时用与解释器匹配的 pip(如 pip3.9),并用 requirements.txt 管理:
    • 升级 pip:pip3.9 install --upgrade pip
    • 国内镜像加速:pip3.9 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
    • 批量安装:pip3.9 install -r requirements.txt

五 常见坑与快速排错

  • 缺少 libffi-devel 导致 ModuleNotFoundError: No module named ‘_ctypes’:提前安装 libffi-devel 并重新编译。
  • 启用 –enable-shared 后报找不到共享库:确认 /usr/local/lib 已加入 ld.so.conf.d 并执行 ldconfig
  • 误改系统 python 导致 yum 异常:将 /usr/bin/python 恢复为 /usr/bin/python2.7,或用 alternatives 正确切换版本。
  • 编译或 pip 安装过慢:更换 PyPI 镜像源、优化网络,必要时使用国内镜像加速。
  • 脚本调用错版本:在脚本首行使用正确的 shebang(如 #!/usr/bin/env python3),并通过 which python3 确认解释器路径。

0