python 版本管理之 pyenv 安装配置

文章目录

    • 什么是 pyenv
      • 核心概念
    • pyenv 的作用和优势
      • 主要作用
      • 优势对比
    • 安装 pyenv
      • macOS 安装
        • 方法一:使用 Homebrew(推荐)
        • 方法二:使用安装脚本
      • Linux 安装
        • Ubuntu/Debian
        • CentOS/RHEL/Fedora
      • 配置环境
        • 对于 Zsh (macOS 默认)
        • 对于 Bash
        • 重新加载配置

什么是 pyenv

pyenv 是一个 Python 版本管理工具,允许你在同一台机器上安装和管理多个 Python 版本。它通过修改 PATH 环境变量来切换不同版本的 Python。

核心概念

  • 全局版本: 系统范围内的默认 Python 版本
  • 本地版本: 特定项目目录的 Python 版本
  • Shell 版本: 当前 shell 会话的 Python 版本
  • shims: pyenv 创建的轻量级可执行文件,用于拦截 Python 命令

pyenv 的作用和优势

主要作用

  1. 多版本管理: 在同一系统上安装和使用多个 Python 版本
  2. 项目隔离: 不同项目可以使用不同的 Python 版本
  3. 开发测试: 轻松测试代码在不同 Python 版本下的兼容性
  4. 系统保护: 不会影响系统自带的 Python

优势对比

特性 pyenv 系统包管理器 官方安装包
多版本共存
项目级版本控制
不影响系统Python
易于卸载 ⚠️
版本切换

安装 pyenv

macOS 安装

方法一:使用 Homebrew(推荐)
# 安装 pyenv
brew install pyenv

# 安装构建依赖
brew install openssl readline sqlite3 xz zlib
方法二:使用安装脚本
curl https://pyenv.run | bash

Linux 安装

Ubuntu/Debian
# 安装依赖
sudo apt update
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
    libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
    libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev \
    liblzma-dev python3-openssl git

# 安装 pyenv
curl https://pyenv.run | bash
CentOS/RHEL/Fedora
# 安装依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y zlib-devel bzip2-devel openssl-devel \
    ncurses-devel sqlite-devel readline-devel tk-devel \
    gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel

# 安装 pyenv
curl https://pyenv.run | bash

配置环境

对于 Zsh (macOS 默认)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
对于 Bash
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
重新加载配置
# 对于 zsh
source ~/.zshrc

# 对于 bash
source ~/.bashrc

# 或者重启终端
exec $SHELL

你可能感兴趣的:(python,python,开发语言)