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
常见问题解决
-
编译错误
ModuleNotFoundError: No module named '_ctypes'
sudo dnf install libffi-devel -y rm -rf ~/.pyenv/versions/3.12.3 # 删除失败版本 pyenv install 3.12.3 # 重新安装
-
虚拟环境激活无效
# 检查插件初始化 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 |
查看所有虚拟环境 |