#macOS #python #python3

遇到的问题

  1. 终端无法执行 code 命令打开 vscode
  2. 升级之后发现终端执行 cd 命令会报 env: python: No such file or directorymacosmojave 这种错误苹果发布会

解决过程

第一个问题网上已经有文章给了解决方案,简单来说就是将 code 脚本中的 python 命令修改为 python3

在终端中执行如下命令:

$ vim /usr/local/bin/code

原始内容如下:

#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
function realpath() { python -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --ms-enable-electron-run-as-node "$@"
exit $?

修改为:

#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
function realpath() { python3 -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --ms-enable-electron-run-as-node "$@"
exit $?

第二问题比较奇怪,我两台 mac 都升级到 12.3,一台没有这个问题,另一台有这个问题。
我的解决思路是既然苹果删除了 python2 ,那我python语言就自己安装一个。
mac 上采用 bmacos和windows区别rew 命令安装,但是我在执行 brew苹果xs search python 发现 python@2 已经找不到了,所以这个方法放弃了。

后来又看了一下 brew 安装的 pythonElectron@3.9 其实是在 /usr/local/bin 目录中配置了软链,所以又想既然系统找不到 python 命令,那我也在 /usr/local/bin 目录下配苹果12置一个 python 软链,链接到 python3 不就完事了,执行如下命令:

$ cd /usr/local/bin
$ sudo ln -s ../Cellar/python@3.9/3.9.6/bin/python3 python

然后再执行 cd 发现问题解决了。

后来又发现,code 执行失败也是因为找不到 python 命令导致的,既然已经配置了 python 软链,code 脚本是不是也就不用变更了呢?

所以又将 code 脚本苹果手机还原,再次执行 code ,也可以正常打开 vscode。

总结

以上两个问题归根结底还approach是因为找不到 python 命令导致的,我的解决方案是:配置一个名称为 python 的软链链接到 python3 命令。

完事!