5

如果你安装了多个版本的python(我目前有默认的2.5,安装了3.0.1,现在安装了2.6.2),它会自动将东西放入/usr/local,并且它还会调整路径以/Library/Frameworks/Python/Versions/theVersion/bin包含/usr/local已经在 PATH 上,并且所有已安装的版本(除了默认的 2.5,在 中/usr/bin)都在那里?我从我的 PATH 中删除了 python 框架路径,.bash_profile我仍然可以输入"python -V" => "Python 2.5.1", "python2.6 -V" => "Python 2.6.2", "python3 -V" => "Python 3.0.1". 只是想知道为什么它把它放进去/usr/local,并且还改变了 PATH。我做的好吗?谢谢。

此外,2.6 安装使其成为“当前”安装,.../Python.framework/Versions/Current指向 2.6。,所以简单的“python”东西/usr/local/bin指向 2.6,但这没关系,因为usr/bin首先出现并且那里具有相同名称的东西指向 2.5东西.. 无论如何,2.5 带有 leopard,我安装了 3.0.1 只是为了拥有最新版本(有一个 dmg 文件),现在我安装了 2.6.2 用于 pygame。

编辑:好的,这就是我的理解。例如,当您安装 Python 2.6.2 时:会添加一堆符号链接/usr/local/bin,因此当#! /usr/local/bin/pythonpython 脚本中有 shebang 时,它将运行,并且在 中/Applications/Python 2.6,Python Launcher 成为运行 .py 文件的默认应用程序,它使用/usr/local/bin/pythonw, 并被/Library/Frameworks/Python.framework/Versions/2.6/bin创建并添加到路径的前面,因此which python会将 python 放入其中,并且#! /usr/bin/env pythonshebang 也将正确运行。

4

2 回答 2

5

没有先验保证 /usr/local/bin 将保留在 PATH 上(尤其是它不一定会保留在 /usr/bin 的“前面!-”),因此安装程序确保特别需要的 / 是完全合理的Library/.../bin 目录确实位于 PATH 上。另外,可能是 /Library/.../bin 具有未符号链接到 /usr/local/bin 的补充内容,尽管我认为目前 Python 的最新 Mac 标准发行版并非如此。

如果您知道您安排路径的方式以及您将使用的确切的可执行文件集完全可以从 /usr/local/bin 中得到满足,那么您可以删除 /Library/etc 目录当然,从你自己的道路。

于 2009-09-05T17:53:27.477 回答
0

我刚刚在我的 Mac 上注意到/遇到了这个问题。我的机器上有 Python 2.5.4、2.6.2 和 3.1.1,并且正在寻找一种可以随意在它们之间轻松切换的方法。那是我注意到可执行文件的所有符号链接的时候,我在“/usr/bin”和“/usr/local/bin”中都找到了这些符号链接。我撕掉了所有非特定于版本的符号链接,留下了 python2.5、python2.6 等,并编写了一个 bash shell 脚本,我可以以 root 身份运行该脚本来更改我用来将路径指向我选择的版本的一个符号链接

'/Library/Frameworks/Python.framework/Versions/Current'

撕掉符号链接的唯一不好的事情是,如果其他应用程序出于某种原因需要它们。我对创建这些符号链接的原因的看法类似于 Alex 的评估,安装程序正试图覆盖所有基础。我的所有版本都由安装程序安装,尽管我一直在尝试编译自己的版本以启用完整的 64 位支持,并且在编译和安装自己的版本时,您可以选择不创建符号链接或修改 PATH安装。

于 2009-09-05T20:41:25.833 回答