本地管理多个python版本

在本地管理多个 Python 版本是开发中的常见需求,以下是几种主流且高效的方法,适用于不同操作系统:


一、使用 pyenv(推荐给 macOS/Linux 用户)

原理:通过修改环境变量动态切换 Python 版本,不依赖系统自带的 Python。

1. 安装 pyenv

1
2
3
4
5
6
7
# 使用安装脚本
curl https://pyenv.run | bash

# 将以下内容添加到 ~/.bashrc 或 ~/.zshrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

2. 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看可安装版本
pyenv install --list

# 安装指定版本(如 Python 3.9.6)
pyenv install 3.9.6

# 列出已安装版本
pyenv versions

# 设置全局默认版本
pyenv global 3.9.6

# 设置当前目录的本地版本(优先级更高)
pyenv local 3.8.12

# 卸载版本
pyenv uninstall 3.7.0

二、使用 conda(跨平台,适合科学计算场景)

原理:通过虚拟环境管理 Python 版本和依赖。

1. 安装 Miniconda/Anaconda

从官网下载安装包:https://docs.conda.io/en/latest/miniconda.html

2. 创建不同 Python 版本的环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建名为 py38 的环境,指定 Python 3.8
conda create -n py38 python=3.8

# 激活环境
conda activate py38

# 查看所有环境
conda env list

# 退出环境
conda deactivate

# 删除环境
conda env remove -n py38

三、使用 Docker(适合隔离开发环境)

通过容器化技术隔离不同项目环境。

示例 Dockerfile

1
2
3
4
5
FROM python:3.7-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]

使用不同镜像版本

1
2
# 运行 Python 3.9 容器
docker run -it --rm python:3.9-alpine python --version

四、Windows 用户的替代方案

  1. pyenv-win(类似 Unix 的 pyenv):

    1
    2
    3
    # 安装命令
    Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"
    & "./install-pyenv-win.ps1"
  2. 手动安装多个版本

    • 从官网下载不同版本的安装包(如 python-3.8.exepython-3.10.exe
    • 安装时勾选 “Add to PATH”,但通过修改可执行文件名区分版本:
      1
      2
      # 将 Python 3.8 的可执行文件重命名
      mv /path/to/python3.8/python.exe /path/to/python3.8/python38.exe

五、通用技巧:虚拟环境 + 版本指定

即使使用系统 Python,也可通过 venvvirtualenv 隔离环境:

1
2
3
4
5
6
# 使用特定 Python 版本创建虚拟环境
/path/to/python3.9 -m venv myenv

# 激活环境
source myenv/bin/activate # Linux/macOS
myenv\Scripts\activate.bat # Windows


版本管理工具对比

工具 适用系统 特点
pyenv macOS/Linux 轻量级,纯命令行操作
conda 跨平台 集成包管理,适合科学计算
Docker 跨平台 完全环境隔离,但需学习容器技术
手动管理 所有系统 灵活性高,但维护成本较高

选择工具时,建议优先使用 pyenv(Unix)或 conda(跨平台)以简化操作。