为什么来自 /usr/local/bin/python3 的 link 与 "which python3" 的路径不同?

Why has the link from /usr/local/bin/python3 a different path from "which python3"?

我之前安装了python 3.6,今天安装了python 3.7.4。当我在命令中输入 python3 时,它会打开 python 3.6,我想将其更改为 python 3.7.4.

which python3 显示 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3

但是 /usr/local/bin/ 中的 link 是: python3 -> ../../../Library/Frameworks/Python.framework/Versions/3.7/bin/python3

pip3也是如此。为什么? ?

如何将 which python3 更改为 python 3.7.4?我不想使用 alias.

我使用的是 MacOS 10.14.2

您的 OS 使用 PATH 环境变量来查找您写入 shell 的命令,因此如果您键入 python3 它将遍历此 PATH 中列出的目录并检查是否有您的程序。它获取第一个匹配的程序并执行它,因此在您的情况下,目录 /Library/Frameworks/.../3.6/bin 位于目录 usr/local/bin 之前,这意味着将使用 /Library/Frameworks/.../3.6/bin 中的 python3

因此您需要更改此 PATH 变量:

export PATH="/Users/sky/Documents/software/Montage-master/bin:/usr/share/file/magic/mercurial:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/mysql/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin"

您可以将其放入您的 ~/.bash_profile 中,这样它就可以永久保存,并且您无需在每次打开新终端时都进行设置 window。

请注意 这不会自动更新会话剩余部分的路径。为此,您应该 运行:

source ~/.bash_profile

您确定安装了 python3.7 吗? 您可以查看文件夹

cd /usr/bin

接下来搜索 python 的文件:

find /usr/bin/ python3

如果文件名不存在 python3.7 安装

sudo apt install python3.7
sudo apt update