电脑同时装了Python 2和3,怎么指定版本启动?

Miles
Miles
发布时间:2026-11-12| 13人浏览过
原创

电脑同时安装了Python 2和Python 3时,如何准确指定版本启动?本文详解Windows下的py启动器机制与macOS/Linux多版本调用方案,涵盖脚本运行、pip包管理及避坑指南。

如果你的电脑上同时安装了 Python 2 和 Python 3,最直接且标准的指定启动方法取决于操作系统:在 Windows 下,使用官方内置的 py -2 与 py -3 启动器指令;在 macOS 或 Linux 下,直接调用各自独立的可执行文件名 python2 与 python3。当需要运行脚本或安装第三方扩展时,遵循“显式声明版本”原则,使用 py -X 脚本名.py 以及 py -X -m pip install 库名(macOS/Linux 为 pythonX -m pip install 库名),即可彻底避开由于环境变量 PATH 抢占造成的执行错乱和库装错版本的问题。
电脑同时装了Python 2和3,怎么指定版本启动?
图 0:多版本 Python 共存架构与分流中枢机制概览

一、为什么直接在终端输入 python 会产生混乱?

很多初学者在同时安装了 Python 2.7 和 Python 3.x 之后,直接打开命令行输入 python,往往会发现启动的总是其中某一个固定版本,甚至有时还会出现“明明昨天调的是 3,今天怎么变成 2 了”的疑惑。

这是由操作系统的程序检索机制决定的。当你在命令行中输入一个命令且没有带绝对路径时,操作系统会在系统环境变量 PATH 所记录的目录列表中,从前往后逐一寻找名为 python.exe(或 Linux/Mac 下的 python)的文件:

  • 如果系统在第一个目录中找到了匹配文件,就会立即加载执行该程序,并彻底停止后续检索;
  • 排在后面的 Python 安装目录里的 python.exe 就会被完全“遮蔽”,永远无法通过简单的 python 单词被唤醒;
  • 不少用户曾试图通过手动重命名安装目录下的可执行文件(比如把 python.exe 手工改成 python2.exe 或 python3.exe)来解决问题。这种做法虽然直观,但有明显副作用:它会破坏 pip 工具内部硬编码的解释器入口,导致后续使用 pip 安装依赖、创建标准虚拟环境或执行官方补丁更新时频繁报错。
电脑同时装了Python 2和3,怎么指定版本启动?
图 1:系统 PATH 线性检索冲突与启动器精准分流架构对比

二、Windows 平台官方标准:使用 py 启动器

从 Python 3.3 版本开始,Python 官方针对 Windows 平台引入了 PEP 397 规范,专门提供了一个名为 Python Launcher(可执行文件为 py.exe)的轻量级调度工具。该工具默认被安装在 C:\Windows\py.exe 下,因此无论你的 PATH 环境变量如何设置,py 指令都能全局直接生效。

1. 交互式命令行环境启动

在命令提示符(CMD)或 PowerShell 中,你可以通过添加大版本参数直接进入对应的交互式解释器环境:

# 启动 Python 2.x 交互式终端
py -2

# 启动 Python 3.x 交互式终端
py -3

示例输出如下:

C:\Users\Developer> py -2
Python 2.7.18 (v2.7.18:8d21aca5c9, Apr 20 2020, 13:24:56) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\Users\Developer> py -3
Python 3.11.8 (tags/v3.11.8:db85d51, Feb  6 2024, 22:03:32) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

2. 查看本机已被识别的全部 Python 版本

你可以运行以下命令列出系统中所有已注册并被识别的 Python 解释器:

py --list
# 或者简写为
py -0

输出中带有星号 * 的项表示当前系统默认的优先版本。

3. 指定具体的次要版本(Minor Version)

如果你的电脑上不仅装了 Python 2.7,还同时装了 Python 3.8 和 Python 3.11,py 启动器同样支持精准定位:

# 指定精确的子版本
py -3.8 script.py
py -3.11 script.py

4. 执行脚本与 Shebang(释伴行)自动识别

除了在命令行传参,你还可以在 Python 脚本文件的最开头写上一行 Shebang 声明。例如在 legacy_tool.py 首行加入:

#!python2
# -*- coding: utf-8 -*-
print "This script runs on Python 2"

当你直接在终端输入 py legacy_tool.py 或者在资源管理器中双击该脚本时,py.exe 会自动读取该行声明,并主动启动 Python 2 来解析执行它,无需你在命令行里反复输入 -2。

提示:如何修改 Windows 下默认的 py 行为?
如果你希望直接敲 py 时默认运行 Python 3,可以设置系统环境变量 PY_PYTHON=3;或者在用户配置目录(%LOCALAPPDATA%\py.ini)创建配置文件,写入 [defaults] 与 python=3 即可。
电脑同时装了Python 2和3,怎么指定版本启动?
图 2:多版本 Python 启动与操作流程决策树

三、macOS 与 Linux 平台:系统原生命名规范与隔离

在类 Unix 系统(macOS 与各类 Linux 发行版)中,由于系统工具链长期有版本区分的传统,主流软件包管理器在安装时就天然采用了不同的二进制名称,因此管理起来更加直观。

1. 标准启动指令

直接通过终端输入带版本数字的命令即可分别唤起对应环境:

# 启动 Python 2
python2
# 运行 Python 2 脚本
python2 my_app.py

# 启动 Python 3
python3
# 运行 Python 3 脚本
python3 my_app.py

2. 确认可执行文件的实际安装路径

如果你想了解当前调用的 python2 和 python3 分别对应硬盘上的哪个物理文件,可以使用 which 命令核对:

which python2
# 示例输出:/usr/local/bin/python2 或 /usr/bin/python2

which python3
# 示例输出:/usr/local/bin/python3 或 /opt/homebrew/bin/python3
重要警告:切勿强行覆盖系统默认的 /usr/bin/python 软链接!
在许多 Linux 发行版(如 CentOS 7/RHEL)中,系统的底层管理软件(如 yum、firewalld)内部深度依赖 Python 2。如果盲目将系统的 /usr/bin/python 强制链接到 Python 3,会导致系统包管理工具直接崩溃。正确的做法是保持系统链接不变,在自己的 Shell 配置文件(如 ~/.bashrc 或 ~/.zshrc)中定义 alias 别名。
电脑同时装了Python 2和3,怎么指定版本启动?
图 3:Python 2 与 Python 3 全场景启动与管理命令矩阵对照表

四、核心避坑点:两套版本的 pip 和依赖库如何安装才不冲突?

在双版本共存的环境中,最常见的事故不是“启动不了 Python”,而是“给 Python 安装第三方库时装错地方”。很多读者习惯直接在终端运行:

# 不推荐的危险写法
pip install requests

这种写法极其容易引发混淆,因为 pip 也是一个由 PATH 决定的命令。如果 PATH 前列指向 Python 2 的 Scripts 目录,第三方库就会被下载到 Python 2 的 site-packages;但随后你用 python3 app.py 执行代码时,就会立刻遭遇 ModuleNotFoundError: No module named 'requests'。

终极解决方案:使用 -m pip 模块化调用语法

通过将 -m pip 作为参数传递给明确的解释器,可以强制要求当前指定的 Python 版本来调用其自身绑定的 pip 工具,彻底消灭安装位置错乱:

目标环境 Windows 系统推荐命令 macOS / Linux 推荐命令 安装目标目录
Python 2 py -2 -m pip install 库名 python2 -m pip install 库名 Python 2 专有 site-packages
Python 3 py -3 -m pip install 库名 python3 -m pip install 库名 Python 3 专有 site-packages
查看已装包 py -3 -m pip list python3 -m pip list 验证安装结果

如果想核实某个版本实际的模块安装路径,可直接执行:

# 查看当前 Python 2 的包搜索路径
py -2 -m site

# 查看当前 Python 3 的包搜索路径
py -3 -m site

五、现代工程建议:使用虚拟环境隔离版本与依赖

在实际项目开发中,如果长期把所有库都堆在全局环境里,不同版本之间的依附关系容易越来越乱。利用虚拟环境将项目目录与特定版本绑定是更加优雅且标准的实践:

1. 基于 Python 3 创建隔离环境

Python 3 原生集成了 venv 模块,直接运行:

# Windows 环境
py -3 -m venv my_project_env

# 激活环境
.\\my_project_env\\Scripts\\activate

# macOS / Linux 环境
python3 -m venv my_project_env
source my_project_env/bin/activate

2. 基于 Python 2 创建隔离环境

由于 Python 2 没有内置 venv,需要借助 virtualenv 工具:

# 先为 Python 2 安装 virtualenv 工具
py -2 -m pip install virtualenv

# 创建指定 Python 2 的独立环境
virtualenv -p py -2 my_py2_env

# 激活环境后,终端提示符前会出现环境名,此时直接输入 python / pip 均默认指向该虚拟环境内部
deactivate  # 退出虚拟环境
电脑同时装了Python 2和3,怎么指定版本启动?
图 4:多版本共存高频故障排查与自查决策模型

六、常见问题与排错自查清单

  1. 在 Windows 命令行中输入 py 提示“'py' 不是内部或外部命令”?
    说明你在安装 Python 3 时,未将“Python Launcher”勾选安装,或者当时取消了相关选项。解决方法:重新运行 Python 3 的安装包(Installer),选择“Modify”,确保勾选“py launcher”以及“for all users”,完成后重新打开命令行终端即可。
  2. 输入 py -2 -m pip 提示 No module named pip?
    较早期的 Python 2.7 版本默认并未打包 pip 工具。可以在终端通过运行 py -2 -m ensurepip 尝试内置补全;若该命令不可用,可下载官方提供的 get-pip.py 脚本,然后通过 py -2 get-pip.py 执行补全安装。
  3. 在代码编辑器(如 VS Code)中,如何指定用 Python 2 还是 3 运行?
    在 VS Code 界面右下角或通过快捷键 Ctrl+Shift+P(Mac 为 Cmd+Shift+P)输入 Python: Select Interpreter,在弹出列表中会列出本机扫描到的全部 Python 路径,点击即可为当前项目指定对应的执行环境。
总结:面对电脑中的 Python 2 与 Python 3,牢记“不要直接敲裸命令 python 和 pip”。在 Windows 上信任并使用 py -2、py -3 和 py -X -m pip;在 Linux/Mac 上使用 python2、python3 和 pythonX -m pip,就能从根本上解决版本冲突,让不同时期的脚本与项目稳定运行。
相关专题:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。