核心痛点
在 Windows 上安装 Python,现在官网默认推送的是'Python Install Manager'(msix 包),而非传统的 exe 安装包。官方文档指出,随着 Python 3.16 发布,传统安装器将逐步停止更新,这意味着未来这将成为主流。
不过,这种新方式在实际使用中容易带来两个麻烦:
- pip 命令失效:
python -V正常,但输入pip却报错。通常是因为 Scripts 目录没进系统环境变量 Path。 - 多版本切换困难:默认总是调用最新版,如何动态切换版本成了刚需。
- py 与 python 的关系:两者输出一致,但底层逻辑不同,搞清楚这个对后续管理很重要。
命令机制与差异
理解 python 和 py 的区别是解决问题的关键。
- python:直接调用
python.exe。它依赖环境变量 PATH,谁排在前面就启动谁,灵活性差,容易引发版本冲突。 - py:Windows 独有的 Python 启动器。它不依赖 PATH,而是扫描注册表。它能自动启动最新版,也能指定版本,比如
py -3.8。
结论很简单:在 Windows 命令行里,建议用 py 全面替代 python,但这仅限于 Windows 环境。
有几个常用场景值得注意:
# 列出当前已安装的 Python 版本,* 标记的是当前激活的版本
py --list
# 使用 3.13 版本运行脚本
py -3.13 xxx.py
可以看到 py 严格区分版本。目前官方尚未提供一键动态切换当前会话版本的命令,意图可能是让用户时刻明确当前使用的版本对应关系。
另外,通过 Python Install Manager 安装后,默认路径通常在 C:\Users\<用户名>\AppData\Local\Python,并且会自动把 bin 文件夹添加到当前用户的 Path 中。
依赖管理与最佳实践
假设你需要安装 uv,如果用传统方式,可能需要这样写:
py -m pip install uv
这里的 -m 参数告诉 Python 不要运行文件,而是去库中找 pip 模块执行。
但你会发现,安装完 uv 后直接在终端输入 uv 会报错找不到文件。这是因为 uv 被安装到了当前 Python 环境的 Scripts 目录下,而该目录并未加入系统 Path。虽然可以手动添加环境变量,但这并不是最优解。
如果你指定了版本安装,例如 py -3.13 -m pip install uv,结果是一样的,只是路径指向特定版本目录。
那么,有没有更好的方案?答案是肯定的:直接用 uv 安装 uv。
推荐使用以下命令(PowerShell):
#ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
这种方式安装后,会自动配置好环境变量,一行命令就能搞定依赖管理和虚拟环境创建。
总结:或许你并不需要手动安装 Python
对于 Windows 用户,其实可能只需要安装 uv 就够了。只装 uv 的好处很明显:
- 系统零污染:控制面板卸载列表里干干净净,没有一堆 "Python 3.x" 或 "Python Launcher"。
- 版本自由:想用 3.8?
uv run --python 3.8。想用 3.13?。uv 能井井有条地管理这些版本,用完甚至能一键清理。

