py 命令和虚拟环境
现代的 Python 安装程序(特别是从 Python 官方网站下载的)已经内置了一个非常优雅的解决方案,通过 py 启动器命令来管理不同版本的 Python。最佳实践是使用虚拟环境来隔离不同项目的依赖,避免版本冲突。

在 Windows 上同时安装 Python 2 和 Python 3 (推荐)
这是最简单、最推荐的方式,因为 Python 官方安装程序做得非常好。
步骤 1:下载并安装 Python 3
-
访问 Python 官方下载页面:https://www.python.org/downloads/windows/
-
下载最新的 Python 3.x 版本(Python 3.11)。
-
运行安装程序。
(图片来源网络,侵删) -
关键步骤:在安装的第一个界面,务必勾选 "Add Python 3.x to PATH",这会将 Python 3 的可执行文件路径添加到系统环境变量中。
-
点击 "Install Now" 进行标准安装。
步骤 2:下载并安装 Python 2
- 访问 Python 官方归档页面:https://www.python.org/downloads/windows/ (向下滚动找到旧版本)
- 找到一个 Python 2.x 的最新稳定版(Python 2.7.18)。
- 运行安装程序。
- 关键步骤:同样地,在安装界面,务必勾选 "Add Python 2.7 to PATH"。
- 点击 "Install Now" 进行安装。
步骤 3:验证安装和 py 启动器
安装完成后,打开一个新的 命令提示符 或 PowerShell 窗口(不是在安装过程中打开的那个窗口)。
-
验证
py启动器:py启动器是 Python 官方提供的工具,它会自动查找系统中所有安装的 Python 版本。
(图片来源网络,侵删)# 查看所有可用的 Python 版本 py --list
你应该会看到类似下面的输出:
Installed Pythons found by py Launcher for Windows -3.11-64 * -2.7-64号表示默认版本,你可以通过
py -3.11或py -2.7来指定使用哪个版本。 -
分别运行 Python 2 和 Python 3:
-
运行 Python 3:
py -3 # 或者直接 py (3 是默认版本)
进入交互式解释器后,输入
exit()退出。 -
运行 Python 2:
py -2
进入交互式解释器后,输入
exit()退出。
-
-
验证
pip:pip也会被py启动器管理。- Python 3 的 pip:
py -3 -m pip --version
- Python 2 的 pip:
py -2 -m pip --version
强烈建议始终使用
py -X -m pip的方式来调用pip,这能确保你使用的是正确版本的包管理器。
- Python 3 的 pip:
步骤 4:创建虚拟环境(最佳实践)
不要在全局安装项目依赖,这会导致版本冲突,为每个项目创建独立的虚拟环境。
假设你有一个需要 Python 3 的项目 my_new_project:
# 1. 创建项目文件夹并进入 mkdir my_new_project cd my_new_project # 2. 使用 py -3 创建一个名为 venv 的虚拟环境 py -3 -m venv venv # 3. 激活虚拟环境 # 在 CMD 中 venv\Scripts\activate.bat # 在 PowerShell 中 venv\Scripts\Activate.ps1 # (venv) C:\Users\YourUser\my_new_project> # 激活后命令提示符前会出现 (venv) # 4. 现在在这个环境中,python 和 pip 都指向 Python 3 python --version # 应该显示 Python 3.x pip install requests # 5. 完成工作后,退出虚拟环境 deactivate
假设你有一个旧项目 my_legacy_project 需要 Python 2:
# 1. 创建项目文件夹并进入 mkdir my_legacy_project cd my_legacy_project # 2. 使用 py -2 创建虚拟环境 py -2 -m venv venv # 3. 激活虚拟环境 venv\Scripts\activate.bat # 或 .ps1 # 4. 现在在这个环境中,python 和 pip 都指向 Python 2 python --version # 应该显示 Python 2.7 pip install some-old-package # 5. 退出虚拟环境 deactivate
在 macOS / Linux 上同时安装 Python 2 和 Python 3
macOS 和大多数 Linux 发行版(如 Ubuntu)通常已经预装了 Python 2 和 Python 3,但版本可能很旧(例如系统 Python 2.7),并且不建议直接修改系统自带的 Python,我们使用 pyenv 来管理多个 Python 版本,这是最灵活、最干净的方式。
步骤 1:安装 pyenv
pyenv 是一个优秀的 Python 版本管理器。
在 macOS (使用 Homebrew):
brew install pyenv
在 Linux (Ubuntu/Debian):
# 1. 安装依赖 sudo apt-get update sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev # 2. 安装 pyenv curl https://pyenv.run | bash
步骤 2:配置 Shell 环境
将以下命令添加到你的 Shell 配置文件中(通常是 ~/.bashrc, ~/.zshrc 或 ~/.profile)。
# 在文件末尾添加 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)"
然后重新加载配置文件:
# 对于 bash source ~/.bashrc # 对于 zsh source ~/.zshrc
步骤 3:安装 Python 2 和 Python 3
现在使用 pyenv 安装你需要的版本。
# 安装最新的 Python 2.x (2.7.18) pyenv install 2.7.18 # 安装最新的 Python 3.x (3.11.4) pyenv install 3.11.4
步骤 4:设置全局或局部 Python 版本
-
设置全局默认版本(可选):
# 设置 Python 3 为全局默认 pyenv global 3.11.4 # 查看当前版本 python --version # 应该显示 Python 3.11.4
-
为特定项目设置版本(推荐): 进入你的项目目录,然后设置局部版本,这个设置会覆盖全局设置。
# 进入项目目录 cd /path/to/my_legacy_project # 为这个项目设置 Python 2.7 pyenv local 2.7.18 # 检查版本 python --version # 应该显示 Python 2.7.18 # 再进入另一个项目目录 cd /path/to/my_new_project # 为这个项目设置 Python 3.11 pyenv local 3.11.4 # 检查版本 python --version # 应该显示 Python 3.11.4
步骤 5:创建虚拟环境
使用 venv 模块创建虚拟环境,它会自动使用 pyenv 指定的 Python 版本。
# 在 my_new_project 目录下 (Python 3.11 已激活) python -m venv venv source venv/bin/activate pip install django # 在 my_legacy_project 目录下 (Python 2.7 已激活) python -m venv venv source venv/bin/activate pip install flask
总结与关键点
| 特性 | Windows (推荐) | macOS / Linux (推荐) |
|---|---|---|
| 核心工具 | py 启动器 |
pyenv 版本管理器 |
| 安装方式 | 官网安装包,勾选 "Add to PATH" | pyenv install <version> |
| 调用版本 | py -2, py -3 |
pyenv local <version> |
| 包管理器 | py -2 -m pip, py -3 -m pip |
python -m pip (虚拟环境中) |
| 最佳实践 | 虚拟环境 (py -X -m venv) |
虚拟环境 (python -m venv) |
| PATH 管理 | 安装程序自动处理 | pyenv 通过 shims 动态管理 |
最重要的建议:
- 使用虚拟环境:这是隔离项目依赖、避免包冲突的黄金法则。
- 明确指定版本:无论是用
py -X还是在虚拟环境中,始终清楚地知道自己正在使用哪个版本的 Python 和 pip。 pip的调用方式:使用python -m pip或py -X -m pip,而不是直接调用pip命令,以确保使用正确的包管理器。- 逐步淘汰 Python 2:Python 2 已在 2025 年停止支持,除非维护无法升级的旧项目,否则应尽可能使用 Python 3。
