0

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

4

4 回答 4

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/
于 2013-08-27T22:26:19.243 回答
3

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

其次,/Library/Python/XY除了站点包之外不应该有任何东西。特别是,您可以在此处放置希望由系统上的所有 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/XYZ/Frameworks/Python.framework。

相反,非框架构建会进入 /usr/local/share/pythonX.Y 之类的地方——尽管 Homebrew、MacPorts 和 Fink 再次安装到不同的地方。

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


如果这对你来说太混乱了,甚至无法理解,最简单的做法是卸载你安装的额外 Python2.7,然后使用 Apple 的. 有些人肯定有充分的理由拥有另一个 Python 2.7(上面链接的博客文章显示了其中的一些),但如果你没有这样的理由,为什么要让自己更难呢?

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

值得注意的是,许多认为需要多个 PythonX.Y 安装的常见原因可以通过使用virtualenv.


如果您使用的是 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意味着/opt/local/bin/ipython来自 MacPorts 一个......< /p>

于 2013-08-27T22:37:16.120 回答
1

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

>>> import crypt
>>> crypt
<module 'crypt' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/crypt.so'>
于 2013-08-27T22:30:54.443 回答
-1

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

于 2013-08-27T22:13:59.017 回答