为什么 /usr/bin/python3 将 /Library/Developer/CommandLineTools/usr/bin/python3 报告为 sys.executable?

问题描述 投票:0回答:1
我在 macOS 上遇到了一种情况,其中

sys.executable

 报告的路径与我显式运行的 Python 解释器不同。这是我观察到的:

  1. 我使用 `/usr/bin/python3` 启动了 Python:

    $ /usr/bin/python3 Python 3.9.6 (default, Oct 4 2024, 08:01:31) [Clang 16.0.0 (clang-1600.0.26.4)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> print(sys.executable) /Library/Developer/CommandLineTools/usr/bin/python3 # different from /usr/bin/python3
    
    
  2. 我检查了 /usr/bin/python3 文件,发现它是一个实际的二进制文件,而不是符号链接:

    $ ls -l /usr/bin/python3 -rwxr-xr-x 78 root wheel 118848 Nov 15 12:59 /usr/bin/python3
    
    
这种行为让我感到困惑,因为:

/usr/bin/python3

 不是符号链接,所以我希望 
sys.executable
 能够匹配它。相反,
sys.executable
 指向 
/Library/Developer/CommandLineTools/usr/bin/python3

为什么?如何确保实际的 Python 可执行路径与我显式运行的路径匹配?

任何见解或澄清将不胜感激!

python macos sys xcode-command-line-tools
1个回答
0
投票
当您安装 macOS 的命令行工具包时,它会在

/usr/bin

 中安装 shims(包装器可执行文件)。

所以

/usr/bin/python3

 不是 Python 解释器,它是一个 
启动 Python 解释器的可执行文件。

© www.soinside.com 2019 - 2024. All rights reserved.