前言

在使用 Python 进行项目开发时,我们经常会遇到需要切换 Python 版本的情况。比如项目依赖某个特定的 Python 版本,或者发现当前版本与某些库不兼容。今天我就遇到了这样一个场景:原本在 .venv 虚拟环境中使用的是 Python 3.14,但项目需要降级到 Python 3.12。整个过程踩了一些坑,在此记录分享,希望能帮助到遇到同样问题的开发者。
问题背景
我的项目目录结构如下:
C:\Users\15135\Desktop\xm-file\ocr\
├── .venv\ # 虚拟环境
├── ocr.py # Python 脚本
└── ... # 其他文件
运行 ocr.py 时遇到 ModuleNotFoundError: No module named 'numpy',但安装 paddle-gpu 失败,决定将 Python 版本从 3.14 降级到 3.12。
核心知识点
重要概念 :Python 虚拟环境一旦创建,其中的 Python 版本就被固定了,无法直接原地降级。唯一的解决方案是删除旧环境,用目标 Python 版本重新创建。
方案:使用 uv 管理 Python 版本(推荐)
1. 退出当前虚拟环境
powershell
deactivate
2. 查看 uv 已安装的 Python 版本
powershell
uv python list
输出示例:
cpython-3.14.3-windows-x86_64-none C:\Users\15135\AppData\Roaming\uv\python\...
cpython-3.13.12-windows-x86_64-none <download available>
cpython-3.12.13-windows-x86_64-none <download available>
cpython-3.11.15-windows-x86_64-none <download available>
...
3. 安装目标 Python 版本(如 3.12)
powershell
uv python install 3.12
4. 删除旧的虚拟环境
powershell
Remove-Item -Recurse -Force .venv
5. 用指定版本重新创建虚拟环境
powershell
uv venv --python 3.12 .venv
6. 激活新环境
powershell
.venv\Scripts\activate
7. 验证 Python 版本
powershell
python --version
# 应显示 Python 3.12.13
8. 重新安装项目依赖
powershell
# 如果有 requirements.txt
pip install -r requirements.txt
# 或使用 uv 安装(更快)
uv pip install -r requirements.txt
# 或逐个安装
pip install numpy
# 根据运行报错继续安装其他依赖
9. 在 VS Code 中切换解释器
- 按
Ctrl+Shift+P打开命令面板 - 输入
Python: Select Interpreter - 选择项目目录下
.venv中的 Python 解释器
踩坑记录
坑1:python -0 命令无效
powershell
python -0
# Unknown option: -0
原因 :-0 是 py 命令的选项,不是 python 的。正确用法是 py -0。
坑2:py 命令未找到
powershell
py -0
# py : 无法将"py"项识别为 cmdlet...
原因 :Python Launcher for Windows 未安装或未添加到 PATH。解决方案是安装 Python 时勾选 "py launcher" 选项,或使用 uv 替代。
坑3:激活虚拟环境后仍显示旧版本
powershell
.venv\Scripts\activate
python --version
# 还是显示 3.14
原因 :没有删除旧的 .venv 目录就直接重建。解决:删除旧环境再重建。
完整操作流程实录
以下是我实际操作的全过程,每一步都有输出:
powershell
# 1. 查看可用 Python 版本
PS> uv python list
cpython-3.14.3-windows-x86_64-none # 当前使用的版本
cpython-3.12.13-windows-x86_64-none <download available>
...
# 2. 安装 Python 3.12
PS> uv python install 3.12
Installed Python 3.12.13 in 12.22s
+ cpython-3.12.13-windows-x86_64-none
# 3. 删除旧虚拟环境
PS> Remove-Item -Recurse -Force .venv
# 4. 创建新虚拟环境
PS> uv venv --python 3.12 .venv
Using CPython 3.12.13
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate
# 5. 激活环境
PS> .venv\Scripts\activate
# 6. 安装依赖
(.venv) PS> pip install numpy
Successfully installed numpy-1.26.4
# 7. 运行程序
(.venv) PS> python ocr.py
# 程序正常运行
常用命令速查表
| 操作 | 命令 |
|---|---|
| 退出虚拟环境 | deactivate |
| 查看 uv 管理的 Python 版本 | uv python list |
| 安装指定 Python 版本 | uv python install 3.12 |
| 删除虚拟环境 | Remove-Item -Recurse -Force .venv |
| 创建指定版本的虚拟环境 | uv venv --python 3.12 .venv |
| 激活虚拟环境 | .venv\Scripts\activate |
| 查看 Python 版本 | python --version |
| 安装依赖(pip) | pip install -r requirements.txt |
| 安装依赖(uv) | uv pip install -r requirements.txt |
| VS Code 切换解释器 | Ctrl+Shift+P → Python: Select Interpreter |
总结
- 虚拟环境 Python 版本不可直接降级,必须重建
- 推荐使用 uv 管理 Python 版本和虚拟环境,速度快且易用
- 删除旧环境再重建 是最干净、最可靠的方式
- 重建后记得重新安装项目依赖
- 在 VS Code 中需要手动切换解释器到新的虚拟环境
希望这篇文章能帮助到遇到类似问题的开发者。如果你有更好的方法或遇到其他问题,欢迎在评论区交流讨论!
相关链接: