这背后是PATH 环境变量在起作用。搞懂它,你以后遇到“为什么命令找不到”就不会慌。
一、终端是什么
终端(PowerShell、CMD、Git Bash)本身不认识 Python、Git。它只是一个“命令解释器”:
你输入
python终端去某些固定目录里找有没有叫
python的程序找到就运行,找不到就报错
它去哪里找?就靠PATH。
二、PATH 是什么
PATH 是 Windows 里的一个环境变量,里面存了一串目录路径,用分号隔开。例如:
text
C:\Windows\system32 C:\Windows C:\Program Files\Git\cmd C:\Users\你\AppData\Local\Programs\Python\Python311\ C:\Users\你\AppData\Local\Programs\Python\Python311\Scripts\
当你输入:
powershell
python --version
终端会按顺序去 PATH 里的每个目录找:
有没有
python.exe?有 → 运行它
没有 → 继续下一个目录
全都没有 → 报错
无法将“python”项识别为 cmdlet...
所以,能在终端调用 = 程序所在目录被加进了 PATH。
三、安装程序做了什么
安装 Python 或 Git 时,安装向导通常有一个选项:
Python:Add Python to PATH
Git:Git from the command line and also from 3rd-party software
勾选后,安装程序会把程序的安装目录写进 PATH。
于是你在任何目录下输入python或git,终端都能找到。
如果没勾,程序其实装了,但终端找不到,只能去安装目录里双击运行,或者输入完整路径:
powershell
C:\Users\你\AppData\Local\Programs\Python\Python311\python.exe --version
能跑,但很麻烦。所以才要加 PATH。
四、验证 PATH
在 PowerShell 里:
powershell
$env:PATH -split ";"
会列出所有 PATH 目录。找找有没有 Python、Git 的路径。
也可以:
powershell
Get-Command python Get-Command git
输出里的Source就是终端实际找到的python.exe/git.exe路径。
五、为什么 Python 有时用py也能调用
Windows 上装了 Python 后,通常会带一个py.exe,叫Python Launcher,放在C:\Windows\下,而C:\Windows默认就在 PATH 里。
所以:
python:找 PATH 里的python.exepy:找C:\Windows\py.exe,再由它决定用哪个 Python 版本
py的好处:可以指定版本:
powershell
py -3.11 --version py -3.12 --version
六、为什么有些软件装了不能直接用
常见原因:
安装时没勾“加入 PATH”
加了 PATH,但终端没重启:PATH 是启动终端时读取的,改完要重开终端
装到了非标准目录:需要手动加 PATH
多个版本冲突:PATH 里顺序决定用哪个
命令名和实际 exe 名不一样:比如有些程序叫
xxx-cli.exe
七、手动加 PATH(知道就好,先不折腾)
图形界面:
Win 搜索“环境变量”
打开“编辑系统环境变量”
点“环境变量”
在“用户变量”里找到
Path,编辑新建一行,填入目录,比如
C:\Program Files\Git\cmd确定,重开终端
命令行临时加(只对当前终端有效):
powershell
$env:PATH += ";D:\some\tool"
永久加(谨慎):
powershell
[Environment]::SetEnvironmentVariable("Path", $env:PATH + ";D:\some\tool", "User")八、用一个比喻总结
终端 = 前台接待员
命令 = 你要找的人
PATH = 通讯录
安装程序 = 把新人的联系方式写进通讯录
没写进通讯录 → 接待员说“查无此人”
写进去但没重启终端 → 接待员还在用旧通讯录