怎么在同一台电脑上共存Python 3.7.3与其他版本
在同一台电脑上同时使用 Python 3.7.3 与其他版本(如 Python 3.10、3.11 或更高版本),关键在于实现三个层面的解耦:物理安装目录独立、命令行调度入口明确,以及第三方依赖包环境隔离。通过将 Python 3.7.3 与其他版本分别安装到独立路径,借助 Windows 系统的 Python 启动器(py 启动器)或 Unix/Linux 系统的具体版本别名精确调用,再通过虚拟环境(venv)为各个项目绑定独立的依赖目录,即可确保不同版本共存且互不干扰。
一、多版本共存的底层逻辑与路径隔离原理
在同一台计算机上安装多个 Python 解释器时,最常见的冲突通常来自两个方面:命令行执行路径的竞争和第三方依赖包的相互覆盖。默认情况下,Python 官方安装程序的可执行文件同名为 python.exe(Windows)或 python3(Linux/macOS)。操作系统在用户输入命令时,会依据环境变量 PATH 中登记的目录列表从前往后逐一匹配,排在列表前面的目录会直接遮蔽排在后面的同名程序,导致用户无法明确当前调用的具体版本。
另一个深层冲突发生在共享的 site-packages 目录。由于 Python 3.7.3 与 Python 3.10 及更高版本之间的语言语法规范、C-API 接口和字节码格式存在显著差异,如果多个版本共用同一个全局库目录,更新某一个版本的依赖包极易导致另一个版本的预编译二进制轮子(Wheel)因 ABI 不兼容而崩溃。
要实现安全、稳定的共存,必须遵循以下基本原则:
- 目录物理隔离:将每个 Python 大小版本安装在完全独立的文件夹中,绝不覆盖已有安装。
- 启动分发机制:不直接依赖没有版本后缀的全局 python 命令,而是通过版本特定命令(如 py -3.7 或绝对路径)显式指定解释器。
- 运行环境沙箱化:避免在全局环境下安装业务项目所需的第三方库,通过虚拟环境将每个项目所需的包严格限定在项目内部。
二、安装规划与关键配置步骤
在安装阶段,通过正确的选项配置可以避免绝大多数由于环境变量混乱产生的问题。具体操作步骤如下:
1. Windows 环境下的安装要点
在 Windows 系统中,通常建议保留一个较新的版本(如 Python 3.11 或 3.12)作为全局默认解释器,而将 Python 3.7.3 作为按需调用的从属解释器:
- 准备安装包:前往 Python 官方档案库下载
python-3.7.3-amd64.exe离线安装文件。 - 启动自定义安装:双击安装程序,必须选择 Customize installation(自定义安装),不可直接点击默认的 Install Now。
- 保留可选功能:在 Optional Features 界面中,确保勾选 Documentation、pip、tcl/tk and IDLE 以及 Python test suite。最下方的 py launcher 保持勾选状态。
- 定制高级选项:进入 Advanced Options 界面:
- 勾选 Install for all users(为所有用户安装,此时会自动将安装路径切换为根目录规范形式)。
- 关键选项:取消勾选“Add Python to environment variables”。这一步至关重要,取消勾选能阻止 Python 3.7.3 的目录被追加到系统全局 PATH,防止其冲刷或覆盖电脑中已存在的高版本 Python。
- 自定义路径:将 Customize install location 修改为简洁的非中文无空格路径,例如
C:\Python373。
- 完成安装:点击 Install 执行安装,完成后关闭向导。
2. Linux 与 macOS 环境下的安装要点
在类 Unix 系统中,系统发行版往往依赖内置的 Python 版本(如系统的包管理器工具),严禁直接替换 /usr/bin/python3 软链接:
- 源码编译时的隔离安装:解压 Python 3.7.3 源码后,在终端执行配置命令并指定独立的安装前缀:
./configure --prefix=/usr/local/python3.7.3 --enable-optimizations - 必须执行 altinstall:编译完成后,执行安装命令时务必使用
make altinstall而非make install。altinstall会保留系统中现有的 python3 符号链接不变,只生成带版本后缀的二进制文件(如python3.7),从而保证系统底层脚本不受影响。
三、命令行分发与多版本解释器精确调用
完成安装后,不能依赖直接输入 python 命令来启动特定版本。通过以下规范方式可以精确调用目标解释器:
1. Windows 下的 Python Launcher 调度方法
Windows 平台提供的 py.exe 是解决多版本冲突最有效的工具。它会自动注册在 C:\Windows\py.exe(处于系统核心路径中),并自动扫描注册表中登记的所有 Python 版本。
在任意终端(CMD 或 PowerShell)中列出当前电脑中所有被识别的 Python 版本:
py --list
示例输出:
-V:3.11 * Python 3.11.9 (64-bit)
-V:3.7 Python 3.7.3 (64-bit)
列表中带星号 * 的项目表示当前的全局默认版本。要启动特定版本,只需在 py 命令后附加版本代号:
- 启动 Python 3.7.3 交互式终端:
py -3.7 - 启动 Python 3.11 交互式终端:
py -3.11 - 使用 Python 3.7.3 运行特定脚本:
py -3.7 script_legacy.py
2. 类 Unix 系统下的版本后缀与绝对路径调用
在 Linux 或 macOS 系统中,若通过 make altinstall 完成安装,直接调用带版本号的二进制程序:
python3.7 --version
或直接指定编译前缀的完整绝对路径执行:
/usr/local/python3.7.3/bin/python3.7 -V
3. 校验当前解释器的执行路径
可以通过一条轻量级内联指令,打印出当前运行环境的版本号与对应二进制文件路径,验证是否准确分发:
py -3.7 -c "import sys; print('版本:', sys.version); print('路径:', sys.executable)"
示例输出:
版本: 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
路径: C:\Python373\python.exe
四、利用虚拟环境构建项目专属运行沙箱
即使在电脑中安装了 Python 3.7.3,也不应该通过全局 pip install 安装业务模块。Python 标准库自带的 venv 模块能够为具体工程创建完全独立的虚拟环境。
1. 创建指定 Python 3.7.3 的虚拟环境
打开终端并切换到项目所在的文件夹中,运行以下命令:
cd C:\Projects\my-legacy-project
py -3.7 -m venv venv37
在 Linux 或 macOS 平台下,对应命令为:
python3.7 -m venv venv37
该命令会在当前目录下创建一个名为 venv37 的子目录,其中包含:
- 指向 Python 3.7.3 的专有可执行文件(在 Windows 下为
venv37\Scripts\python.exe)。 - 专属于本工程的独立
site-packages目录。 - 环境激活脚本(activate 脚本)。
2. 激活虚拟环境
创建完成后,必须显式激活该环境:
- Windows CMD 终端:
venv37\Scripts\activate.bat - Windows PowerShell 终端:
.\venv37\Scripts\Activate.ps1 - Linux / macOS 终端:
source venv37/bin/activate
激活成功后,命令行提示符前方会出现标识符 (venv37)。在激活状态下:
- 执行
python --version,系统会自动定位并输出Python 3.7.3。 - 执行
pip install <package>,所有第三方包只会下载并安装到venv37目录内部,完全不影响全局和其他 Python 版本。
3. 退出虚拟环境
当工程开发或运行结束,需要切换到其他项目时,在终端中输入以下指令即可安全退出:
deactivate
五、常见兼容问题排查与注意事项
Python 3.7 系列官方已于 2023 年正式结束生命周期支持(EOL)。在日常使用 Python 3.7.3 与其他现代版本共存时,需要重点关注以下实际问题:
1. pip 版本过高引发的不兼容
由于现代 pip(如 pip 24.x+)已彻底移除对 Python 3.7 的兼容性支持,如果试图在 Python 3.7.3 环境下将 pip 升级到最新版本,可能会触发运行时异常。处理方案是在该虚拟环境内锁定兼容 3.7 的历史稳定版本:
python -m pip install "pip<=23.0.1"
2. 现代开源库缺失适合 3.7 的预编译二进制包
大量主流第三方库(如 NumPy、Pandas、Scipy、Requests 等)的新版本已不再构建针对 Python 3.7 的 Wheel 预编译轮子。如果直接执行 pip install pandas,pip 可能会尝试下载源码并在本地编译,若缺少 C++ 构建工具链就会报错退出。此时必须明确指定适合 Python 3.7 的历史版本号进行安装,例如:
pip install "pandas<=1.3.5" "numpy<=1.21.6"
3. 检查系统环境变量 PATH 的优先级
如果发现直接在终端输入 python 启动的不是预期的默认版本,可以通过以下命令查看系统实际的检索路径顺序:
- Windows 平台执行:
where python - Linux / macOS 平台执行:
which -a python3
排在输出列表第一行的即为当前全局生效的解释器。若发现 C:\Python373 错误地排在了高版本之前,可打开系统的“环境变量”编辑窗口,在“系统变量”的 Path 项中将 C:\Python373 移至靠后位置,或者直接从全局 Path 中移除,保留由 py 启动器统一调度。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













