在Mac OS X上的python位置


94

我对osx上的python感到有些困惑。我不知道笔记本电脑的先前所有者是否已使用macport安装了macpython。我记得osx具有内置版本的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,我发现与上面相同的消息。

嗯,我有点困惑。哪一个

Answers:


63

[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除非某人不明智地更改了其中的内容,否则其中的项目应该始终是或链接到Apple在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实例来说是典型的,也可以是从源代码构建的。


53

在Mac OS X上,它位于的Python框架中/System/Library/Frameworks/Python.framework/Resources

完整路径为:

/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

顺便说一句,很容易找到在哪里可以找到特定的二进制文件:which Python将向您显示Python二进制文件的路径(可能与我上面发布的相同)。


是的,我知道。只是我感到困惑-我在/ usr / local / bin /上运行了解释器,并打印了sys.executable。它说/ usr / bin / python。但是我阅读了文档,并说苹果提供的文件位于/ usr / bin /中,而macpython的“到Python可执行文件的符号链接位于/ usr / local / bin /中”。
吴作栋

好吧,这很有意义:当您自己编译python-executable并将其移动到/ Users / John / Downloads /时,它将向您显示它位于/ Users / John / Downloads / python中。您可以在同一系统上并排运行多个可执行文件。AFAIK是Python.framework中的一个,但是主要的,所以您应该依赖那个。
elslooo 2011年

28
实际上,Apple在Mac OS X中提供的Python是在中/System/Library/Frameworks/Python.framework。任何东西/Library/Frameworks/Python.framework都来自第三方安装,通常是python.org(或其他分发服务器)安装程序,或者您是否从源代码进行了Python的默认框架构建。
内德·迪利

1
当我运行/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7ps aux输出显示了我/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python,这是为什么-我不认为这是一个符号链接?(在AskDifferent处问这个问题)
Zitrax 2014年

@蒂姆谢谢。当我转到/Library/Frameworks/Python.framework/Versions/时,看不到2.7(这是我已安装的文件),而是一个名为“ Current”的别名文件,单击该文件会给我错误“操作无法竞争,因为找不到“当前”的原始项目。”
Pyderman 2015年

53

我找到了最简单的定位方法,可以使用

which python

它会显示如下内容:

/usr/bin/python


3
这不能回答哪个发行版的Python(由谁发行)。
Scott Prive

42

这个会 解决您所有的问题使用Python和Mac时:

如果您有Mac,并且像我们大多数人一样安装了python3:)(使用brew install-ofc)

您的文件位于:

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

你怎么知道的?跑:

which python3

您应该得到:

/usr/local/bin/python3

现在这是一个符号链接,您怎么知道?跑:

ls -al /usr/local/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

如果由于某种原因

/usr/local/bin/python3 

没有指向您想要的地方,在我们的例子中:

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

只需备份:

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

1
终于....谢谢!!!!! 我在虚拟环境中遇到了这个问题。解决方案也有效。只需要使用正确的python位置
Paul Jurczyk

6

在高山脉

which python

显示默认的python,但是如果您从python.org下载并安装了最新版本,则可以通过以下方式找到它:

which python3.6

我机器上显示的

/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

这不能回答哪个发行版的Python(由谁发行)。
Scott Prive


3

我检查了一些类似的讨论,发现找到所有python2 / python3构建的最佳方法是:

which -a python python3

2

我在这里找到它:/Library/Frameworks/Python.framework/Versions/3.6/bin


1

which python3 只会导致解释者在其中安定下来。


0

在您的交互式终端中运行

import os
os.path

它将为您提供安装python的文件夹



-1

我有一个在Linux / macos中寻找东西的厨师食谱

首先更新定位数据库,然后执行

locate WHATiWANTtoSEARCH | less

/找到您想要的东西。

要在macOS中更新您的定位数据库,请执行以下操作:

sudo /usr/libexec/locate.updatedb

有时需要一段时间。希望这可以帮助 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.