You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

macOS High Sierra下Python安装故障排查:python命令执行异常

问题诊断与解决方案

首先咱们拆解下你遇到的矛盾现象:为什么which python显示的是有效路径,但直接执行python却报错找不到另一个路径?

核心原因

  1. PATH里存在无效的优先目录:从你的echo $PATH输出能看到,/usr/local/opt/python2/libexec/bin这个目录排在/usr/local/bin前面,但这个目录根本不存在(你用ls验证过)。shell执行python时会按PATH顺序依次查找,先尝试访问这个不存在的目录,直接抛出找不到文件的错误。
  2. bash命令缓存的残留:bash会缓存你之前执行过的命令路径(通过hash机制),你之前brew安装的python可能曾经在/usr/local/opt/python2/libexec/bin目录下有可执行文件,卸载后缓存没清空,导致shell还是尝试访问这个旧路径,而非重新遍历PATH找有效的/usr/local/bin/python

which是独立工具,它会忽略PATH里不存在的目录,直接找到第一个存在的可执行文件,所以能正确返回/usr/local/bin/python——这就是两者结果不一致的根源。


修复步骤

1. 移除PATH中的无效目录

  • 打开你的bash配置文件(通常是~/.bash_profile,找不到就看~/.bashrc),找到类似下面的行:
    export PATH="/usr/local/opt/python2/libexec/bin:$PATH"
    
    删除或者用#注释掉这一行。
  • 保存文件后,执行命令刷新当前shell配置:
    source ~/.bash_profile
    

2. 清空bash的命令缓存

执行命令清除bash缓存的旧命令路径:

hash -r

3. 验证修复效果

现在再执行python --version,应该会正常输出Python 2.7.15,同时which python依然返回/usr/local/bin/python,两者结果就一致了。


额外清理建议

根据brew doctor的提示,你有几个损坏的符号链接,可以执行下面的命令清理,避免后续brew相关问题:

brew prune

内容的提问来源于stack exchange,提问作者jamiet

火山引擎 最新活动