python - OS X - 多个 python 版本、PATH 和/usr/local

标签 python macos path multiple-versions

如果你安装了多个版本的 python(我目前有默认的 2.5,安装了 3.0.1,现在安装了 2.6.2),它会自动把东西放在 /usr/local 中。 , 它还调整路径以包含 /Library/Frameworks/Python/Versions/theVersion/bin ,但是当 /usr/local 时有什么意义呢?已经在 PATH 上,并且所有已安装的版本(默认的 2.5 除外,它在 /usr/bin 中)都在那里?我在 .bash_profile 中从我的 PATH 中删除了 python 框架路径, 我仍然可以输入 "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.,/usr/local/bin 中如此简单的“python”内容指向 2.6,但这并不重要,因为 usr/bin首先出现,其中同名的东西指向 2.5 东西。无论如何,2.5 带有 leopard,我安装 3.0.1 只是为了拥有最新版本(有一个 dmg 文件),现在我安装了 2.6.2与 pygame 一起使用。

编辑:好的,这就是我的理解方式。例如,当您安装 Python 2.6.2 时: 一堆符号链接(symbolic link)被添加到 /usr/local/bin , 所以当有一个 #! /usr/local/bin/python shebang 在 python 脚本中,它将运行,并在 /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 python shebang 将正确运行。

最佳答案

没有先验保证/usr/local/bin 会保留在 PATH 上(特别是它不一定会保留在/usr/bin 的“前面!-”),因此安装程序确保特别需要的/Library/.../bin 目录确实进入了 PATH。另外,/Library/.../bin 可能有一些补充内容没有符号链接(symbolic link)到/usr/local/bin,尽管我相信最近的 Python Mac 标准发行版目前不是这种情况。

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

关于python - OS X - 多个 python 版本、PATH 和/usr/local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383863/

相关文章:

python - Django Rest Framework-我可以在序列化器的创建方法中允许 pk id 或完整对象吗?

java - DS_Store 文件导致 Minecraft forge 崩溃

macos - 在 Mac 上以伪分布式模式设置 Hadoop

macos - clang 插件编译错误: undefined symbol llvm::Registry<clang::PluginASTAction,llvm::RegistryTraits<clang::PluginASTAction>>

linux - 如何处理我的 PATH 变量中的重复项?

Python 在 3D 散点图中标注点

python - 无法在python中使用scrapy迭代数据

javascript - 客户端上的 Socket.io 路径,如何将它匹配到我的 node.js 服务器目录树?

design-patterns - Python 设计模式,交叉导入

linux - 在linux中设置环境变量