Mac OS X上的Python位置

152 投票
13 回答
638290 浏览
提问于 2025-04-16 22:14

我对在Mac上使用Python有点困惑。我不知道这台笔记本的前任主人是否通过MacPort安装了MacPython。而且我记得Mac自带有一个Python版本。我试着用 type -a python 命令查看,结果是:

python is /usr/bin/python
python is /usr/local/bin/python

不过在这些位置运行Python时,我得到的结果是 [GCC 4.2.1 (Apple Inc. build 5646)] on darwin。这两个Python是指同一个Mac自带的版本吗?

我还看到说安装MacPython会让人...

     A MacPython 2.5 folder in your Applications folder. In here you
 find IDLE, the development environment that is a standard part of
 official Python distributions...

我查看了 Applications 文件夹,发现里面有一个 MacPort 文件夹,里面有 python2.6 和一些提到的东西。但是运行IDLE时,我发现和之前一样的信息。

嗯,我有点困惑。到底哪个是哪个呢?

13 个回答

93

我找到了一种最简单的方法来找到它,你可以使用

which python

它会显示类似这样的内容:

/usr/bin/python

135

这个方法可以解决你所有的问题,不仅适用于Mac,在Linux上也能找到(以及所有基本的命令行工具)。

简而言之(你不需要看完所有内容,只需看前半部分)。
开始吧!

在终端中运行:

which python3

在Mac上你应该会看到:

/usr/local/bin/python3

等一下!!! 这可能是一个符号链接,你怎么知道呢?运行:

ls -al /usr/local/bin/python3 

如果你是通过Brew安装的Python,你会看到:

/usr/local/bin/python3 -> /usr/local/Cellar/python/3.6.4_4/bin/python3

这意味着你的

/usr/local/bin/python3 

实际上指向的是(真实的位置)

/usr/local/Cellar/python/3.6.4_4/bin/python3

就这样!

更详细的版本(可选): 如果因为某种原因,你的

/usr/local/bin/python3 

没有指向你想要的位置,在我们的例子中是:

/usr/local/Cellar/python/3.6.4_4/bin/python3

只需备份一下(+一个很酷的技巧是给文件加上.orig后缀):

cp /usr/local/bin/python3{,.orig} 

然后运行:

rm -rf /usr/local/bin/python3

现在创建一个新的符号链接:

ln -s /usr/local/Cellar/python/3.6.4_4/bin/python3 /usr/local/bin/python3 

现在你的

/usr/local/bin/python3

指向了

/usr/local/Cellar/python/3.6.4_4/bin/python3 

通过运行以下命令来检查一下:

ls -al /usr/local/bin/python3
78

[GCC 4.2.1 (Apple Inc. build 5646)] 是用来编译 Python 的 GCC 版本,而不是 Python 自身的版本。这个信息应该在前面那一行。比如:

# Apple-supplied Python 2.6 in OS X 10.6
$ /usr/bin/python
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

# python.org Python 2.7.2 (also built with newer gcc)
$ /usr/local/bin/python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

/usr/bin 里的文件应该都是苹果在 OS X 系统中提供的,或者是指向这些文件的链接,除非有人不明智地去改动了这些内容。要查看 /usr/local/bin/python 实际链接到哪里,可以这样做:

$ ls -l /usr/local/bin/python
lrwxr-xr-x  1 root  wheel  68 Jul  5 10:05 /usr/local/bin/python@ -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

在这种情况下,这通常是从 python.org 安装的 Python 版本,或者是从源代码编译的版本。

撰写回答