【问题标题】:Python installation missing a lot of things on Mountain LionPython安装在Mountain Lion上缺少很多东西
【发布时间】:2013-08-30 20:16:48
【问题描述】:

在执行“which 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

【问题讨论】:

  • 您需要安装另一个 Python 2.7 而不是使用系统附带的那个的原因是什么?如果您对此没有一个好的答案,避免所有这些混淆的最简单方法就是摆脱其他 Python。

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


【解决方案1】:

你发现的只是 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/

【讨论】:

  • 谢谢 :) 这行得通。得到“lrwxr-xr-x 1 name admin 33 Aug 25 12:22 /usr/local/bin/python -> ../Cellar/python/2.7.5/bin/python
  • @user2480526,很高兴听到!这意味着它可能是使用 Homebrew 安装的。
  • 是的 - 前几天有人用“brew”安装了一些东西。
【解决方案2】:

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

其次,/Library/Python/X.Y 除了站点包之外应该包含任何内容。特别是,您可以在此处放置希望由系统上的所有 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 仍然有可能意味着 /usr/local/bin/pip 从Apple 或 Python.org 安装,而 ipython 表示来自 MacPorts 的 /opt/local/bin/ipython...

【讨论】:

  • 感谢您提供有用的解释。
  • +1 不错的答案,但是如果您可以通过 MacPorts 和 Fink 安装 pythonic 人员的详细信息对其进行扩展,那将会很酷。也许提到使用虚拟环境的可能性也会给初学者一些提示。
  • @andi:好点。使用每个选项添加每个安装中所有内容的所有详细信息会使这种方式太长(对我来说工作量太大......),但是快速描述而不是仅仅说“不同的地方”肯定会更好。你是对的,提到虚拟环境是一个非常好的主意。谢谢;希望编辑后的版本更好。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 如何回答 OP 的问题?
    • 谢谢。我需要查看 Python 安装的内容。我该怎么做?
    • OP 说“那里什么都没有”,我只是在解释这个事实。
    • @user2480526 你可以试试cd /usr/local/bin/python 然后ls 看看有什么。
    • 不起作用 - " -bash: cd: /usr/local/bin/python: Not a directory " 试过 python27, python2.7-same 结果
    猜你喜欢
    • 2012-10-11
    • 2013-04-06
    • 1970-01-01
    • 2013-02-28
    • 2012-08-22
    • 2013-11-05
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多