Windows 上 Python 多版本共存实战:py 启动器与 venv 的组合拳

举报
yd_284271146 发表于 2026/10/22 14:20:24 2026/10/22
【摘要】 Windows 上 Python 多版本共存的官方三件套方案:py 启动器管版本调度,venv 管依赖隔离,requirements.txt 管环境复现,附常见坑与规避方法。

为什么需要多版本共存

在 Windows 上做 Python 开发,几乎绕不开一个现实问题:老项目跑在 Python 3.9,新项目想用 3.12 的新特性,而公司内部工具链还停留在 3.8。如果把它们装到同一个环境里互相"覆盖",轻则依赖解析失败,重则整个解释器目录被写坏。多版本共存 + 每个项目独立虚拟环境,是成本最低、最不容易翻车的方案。

第一招:官方 py 启动器

Windows 版 Python 安装包自带一个 py 启动器(Python Launcher),它是多版本管理的地基。

py -0            :: 列出本机所有已安装版本
py -3.12 -V      :: 用 3.12 运行
py -3.9 -V       :: 用 3.9 运行
py -3.12 -m pip install requests   :: 给指定版本装包

两个实用细节:

1. py -0p 能打印每个版本的实际安装路径,排查"到底装在哪"很方便;

2. 脚本开头写 #! python3.11(shebang),直接 py script.py 会自动按声明版本执行,跨版本调度不需要改命令。

第二招:venv 给每个项目"划地盘"

解释器多版本只是第一步,依赖隔离要靠虚拟环境。从 Python 3.3 起,venv 是标准库成员,不需要额外安装任何工具:

py -3.12 -m venv .venv312
.venv312/Scripts/activate
python -V && pip -V

激活后 python、pip 都指向虚拟环境内部,装多少包都不会污染全局。退出用 deactivate。

两个容易踩的坑:

  • 路径里的空格:把项目放在带空格的目录(如 Program Files)下,某些老版本工具链会解析出错,建议项目目录用纯英文无空格路径;
  • PowerShell 执行策略:首次激活报"禁止运行脚本"时,执行一次 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 即可,不要图省事用管理员全局放开。

第三招:requirements.txt 锁定依赖

虚拟环境解决了"隔离",但没有解决"复现"。项目根目录放一份 requirements.txt:

pip freeze > requirements.txt          :: 导出当前环境
pip install -r requirements.txt        :: 新环境一键还原

如果项目对外发布,建议手写精简版(只列直接依赖,版本用 ~= 区间),把 pip freeze 的全量快照留给部署环境用。

组合起来是什么效果

我本机目前的常态是:全局只留一个最新稳定版,其余版本按需安装;每个项目一个 .venv 目录(记得加进 .gitignore);换机器或同事接手时,py -0 确认版本、pip install -r requirements.txt 还原依赖,十分钟内恢复开发环境。

不需要 poetry、conda 这类重型工具,官方自带的三件套(py + venv + pip)足够覆盖 90% 的日常场景。工具越少,出问题的面越小。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。