CentOS 8 系统安装 pyenv 全指南

CentOS 8 系统安装 pyenv 全指南

专为 CentOS 8 优化 | 兼容系统默认 Python | 支持多版本管理


一、环境准备(确保系统已配置)

# 安装基础依赖
sudo dnf install -y git gcc make patch zlib-devel bzip2 bzip2-devel readline-devel \
sqlite sqlite-devel openssl-devel tk-devel xz-devel libffi-devel

# 安装编译工具链
sudo dnf groupinstall "Development Tools" -y

重要差异说明(CentOS vs Kali)

  • 包管理命令:dnf(非 apt)
  • 依赖包名:readline-devel(非 libreadline-dev)
  • 默认 Python:保留系统 Python 3.6(不覆盖)

二、安装 pyenv 及核心插件

# 1. 自动安装(官方推荐)
curl -L https://pyenv.run | bash

# 或手动安装(网络受限时)
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

三、配置环境变量

编辑 ~/.bashrc

vim ~/.bashrc

追加内容:

export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init - bash)"

生效配置:

source ~/.bashrc

四、解决 SSH 远程加载问题

# 创建系统级配置
sudo tee /etc/profile.d/pyenv.sh > /dev/null <<'EOF'
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

# 设置权限
sudo chmod +x /etc/profile.d/pyenv.sh

五、安装 Python 版本(示例 3.12.3)

# 查看可用版本
pyenv install --list | grep 3.12

# 安装指定版本
pyenv install 3.12.3

# 验证安装
pyenv versions

六、虚拟环境管理实战

# 1. 创建基于 3.12.3 的虚拟环境
pyenv virtualenv 3.12.3 myproject-env

# 2. 激活环境(局部目录绑定)
mkdir myproject && cd myproject
pyenv local myproject-env  # 创建 .python-version 文件
# 当进入含此文件的目录时,pyenv 自动激活指定环境
# 退出目录后自动失效(无需手动deactivate)


# 3. 检查环境
python -V  # 应输出 Python 3.12.3

# 4. 安装依赖
pip install --upgrade pip
pip install -r requirements.txt

# 5. 退出环境
pyenv deactivate

一键安装脚本 install_pyenv_centos.sh

#!/bin/bash
# CentOS 8 Pyenv 一站式安装脚本
# 要求:sudo权限|已关闭selinux

echo "▶ 安装系统依赖..."
sudo dnf groupinstall "Development Tools" -y
sudo dnf install -y git gcc make patch zlib-devel bzip2 bzip2-devel \
readline-devel sqlite sqlite-devel openssl-devel tk-devel xz-devel libffi-devel

echo "▶ 安装pyenv及插件..."
curl -L https://pyenv.run | bash

echo "▶ 配置环境变量..."
cat >> ~/.bashrc <<'EOL'
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
eval "$(pyenv virtualenv-init - bash)"
EOL

source ~/.bashrc

echo "▶ 配置系统级环境..."
sudo tee /etc/profile.d/pyenv.sh > /dev/null <<'EOF'
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
EOF

sudo chmod +x /etc/profile.d/pyenv.sh

echo "✅ 安装完成!重启终端后执行:"
echo "  查看版本: pyenv --version"
echo "  安装Python: pyenv install 3.12.3"
echo "  创建虚拟环境: pyenv virtualenv 3.12.3 myenv"

使用说明

# 赋予执行权限
chmod +x install_pyenv_centos.sh

# 运行脚本(无需sudo)
./install_pyenv_centos.sh

# 安装Python版本
pyenv install 3.12.3

您遇到的问题很常见。脚本已经成功安装了 pyenv,但当前终端会话无法识别 pyenv 命令。这是由环境变量未即时加载导致的。

解决方法:

1. 手动加载环境变量(推荐)

source ~/.bashrc
source /etc/profile.d/pyenv.sh
pyenv --version  # 现在应该能正常显示了

2. 重启终端

exit  # 关闭当前终端
# 重新连接系统
ssh root@192.168.15.15
pyenv --version  # 此时应该正常显示

3. 验证安装状态

# 检查核心文件是否存在
ls -l ~/.pyenv/bin/pyenv
ls -l ~/.pyenv/plugins

# 手动调用
~/.pyenv/bin/pyenv --version

常见问题解决

  1. 编译错误 ModuleNotFoundError: No module named '_ctypes'

    sudo dnf install libffi-devel -y
    rm -rf ~/.pyenv/versions/3.12.3  # 删除失败版本
    pyenv install 3.12.3             # 重新安装
    
  2. 虚拟环境激活无效

    # 检查插件初始化
    grep virtualenv-init ~/.bashrc  # 确认存在相应行
    exec $SHELL  # 重启Shell
    

性能提示:CentOS 8 编译 Python 3.12.3 约需 15 分钟(4核8GB环境)


版本管理命令速查

命令 作用
pyenv versions 查看已安装版本
pyenv global 3.12.3 设置全局版本
pyenv local myproject-env 设置目录级环境
pyenv uninstall 3.9.10 删除指定版本
pyenv virtualenvs 查看所有虚拟环境
posted @ 2025-07-15 13:21  昵-称  阅读(156)  评论(0)    收藏  举报