Python安装在Mountain Lion上遗漏了很多东西

时间:2013-08-27 22:13:11

标签: python macos directory osx-lion osx-mountain-lion

在做'哪个Python'时它表示'/ usr / local / bin / python'。但是当我通过'finder'去那里时,那里什么都没有。我可以通过finder看到/ Library / Python,点击Library / Python我看到2.3,2.5,2.6,2.7。

默认的Python目前是2.7,我可以看到--version。但它只是/ site-packages。这怎么可能?我不确定它是否是操作系统附带的,或者是否稍后由某人安装。我很困惑。

OSX 10.8.4

4 个答案:

答案 0 :(得分:3)

你发现的只是python二进制文件的符号链接,试着这样做:

ls -l /usr/local/bin/python

这将显示此simlink指向的位置。例如,我得到(见行尾):

lrwxr-xr-x  1 yaser  admin  33 Mar 30 15:59 /usr/local/bin/python -> ../Cellar/python/2.7.3/bin/python

通常它位于:

/Library/Frameworks/Python.framework/Versions/2.7/

答案 1 :(得分:3)

首先,/ usr / local / bin / python 不是 Apple提供的Python;这总是在/ usr / bin / python。

其次,/ Library /Python / X.Y不是假设除了site-packages之外什么都没有。特别是,您可以在系统中放置要由PythonX.Y的所有框架版本共享的包。 (还有/usr/local/lib/pythonX.Y,它还有一个站点包,用于您希望由所有构建,框架和非框架共享的包。)

Apple提供的实际Python本身位于/System/Library/Frameworks/Python.framework中。

大多数第三方框架版本都在/Library/Frameworks/Python.framework中。但是,Homebrew,MacPorts和Fink都安装到不同的地方。例如,Homebrew将安装到`/usr/local/Cellar/python/X.Y.Z/Frameworks/Python.framework。

非框架构建转而进入/usr/local/share/pythonX.Y-再次,Homebrew,MacPorts和Fink安装到不同的地方。

最后,许多安装将创建符号链接(或者有时是包装脚本)到更典型的地方。特别是,/ usr / local / bin / python可能是适当的Python.framework中的Versions / X.Y / bin / python的符号链接,如上所述。


如果您对此感到困惑甚至无法理解,最简单的方法是卸载您安装的额外Python2.7和just use Apple's。有些人肯定有很好的理由可以使用另一个Python 2.7(上面链接的博客文章显示了其中的一些),但是如果你没有 这样的原因,为什么要让事情变得更难自己?

因为看起来你正在使用Homebrew,你甚至可以非破坏性地测试它是否会导致任何问题:brew unlink python将从正常的PATH中删除所有Homebrew Python的痕迹,但是实际文件背后。然后,如果你想要它,只需brew link python;如果没有它你会更开心,brew uninstall python

值得注意的是,使用virtualenv可以更加轻松,干净地解决许多考虑需要多个PythonX.Y安装的常见原因。


如果您使用的是MacPorts或Fink,它们的设计明确是为了避免偏离标准系统位置。因此,所有内容都将安装在MacPorts / Fink根目录下的某个位置,默认分别为/opt/local/sw。 (我假设/opt/local。)这意味着框架构建将会像/opt/local/Library/Frameworks那样,符号链接到/opt/local/bin/opt/local/lib等。网站包将位于/opt/local/Library/Python/X.Y和/或/opt/local/lib/pythonX.Y

因此,不可能与任何其他Python安装发生任何冲突......当然,除了/opt/local/bin/usr/local/bin可能都在你的PATH上之外,pip仍然可能表示来自Apple或Python.org安装的/usr/local/bin/pip,而ipython表示来自MacPorts的/opt/local/bin/ipython ...

答案 2 :(得分:1)

除了遵循符号链接之外,您还可以导入包并键入包的名称以查找它在磁盘上的位置:

>>> import crypt
>>> crypt
<module 'crypt' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/crypt.so'>

答案 3 :(得分:-1)

/usr和其他几个系统路径在Finder中不可见。