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)进行切换。
二 安装方式与路径管理
- 三种常用方式:
- yum/dnf 安装(省心、稳定,版本受限);
- 源码编译(可控性高,适合新版本或定制选项);
- 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 确认解释器路径。