【问题标题】:Is it safe to replace MacOS X default Python interpreter?替换 MacOS X 默认的 Python 解释器是否安全?
【发布时间】:2011-04-12 23:57:21
【问题描述】:

我将默认的 Python 2.6.1 安装为 /usr/bin/python,并将 Python 3.1.2 安装在 /usr/local/bin/python3.1。考虑到我只使用 3.x 语法,使用符号链接(并删除旧的 Python 二进制文件)将默认解释器(2.6)替换为 3.1 解释器(包括 python-config)是否安全?还是系统出于某种我不知道的目的而依赖 2.x 版本?

【问题讨论】:

    标签: python macos python-3.x python-2.x


    【解决方案1】:

    如果您只使用 Python 3,请使用以下命令开始您的脚本:

    #! /usr/bin/env python3.1
    

    而且您将使用正确的版本,而无需担心系统。

    编辑:顺便说一句,这个想法是由 Python 文档提出的。每个脚本都将运行它们所依赖的 Python 版本。由于 Python 3 不向后兼容,因此将 Python 可执行文件替换为会破坏其他实用程序可能依赖的脚本的可执行文件似乎很危险。

    【讨论】:

    • 更好的选择是使用python3 而不是python3.1。那么当python 3.2、3.3等出来并安装好后,你就不用回去记得改变这个和其他脚本了。
    【解决方案2】:

    您不能安全地替换系统提供的 python。我无法为您找到特定于 Mac 的参考资料……但最近的一些 Python 版本不向后兼容……许多依赖于旧版 Python 的脚本将无法在升级后的 Python 上运行。 OS X 预装了 Python,因为它依赖于它。

    尝试改用VirtualEnv

    更新:刚刚从 macports 遇到python-select,这可能会解决您的问题。

    【讨论】:

    • 一般来说,MacPorts python_select 仅适用于安装了 MacPorts 的 Python,尽管它在 /usr/bin 中默认 Apple 提供的 Python 是特殊情况(10.5 为 2.5,10.6 为 2.6)。无论如何,仅使用 python_select 来安装 Python 框架通常是不够的;您需要小心在 PATH 中包含默认框架 bin 以执行为该 Python 实例安装的脚本(假设您没有使用其他 Distutils 安装方案,如 --user)。
    【解决方案3】:

    除非您迫切需要存储,否则不要替换/删除任何二进制文件。在这种情况下,删除它们的里程也很少。

    您可以简单地将 3.1 设为默认:

    defaults write com.apple.versioner.python Version 3.1
    

    还有其他方法可以保证你默认使用3.1,不过我没用过。

    export VERSIONER_PYTHON_VERSION=3.1
    

    【讨论】:

    • 是的,但我需要“python”命令来执行 python3.1 ...我尝试了你的解决方案,但没有一个(显然是恕我直言)改变了 /usr/bin/python 二进制文件。跨度>
    • defaults 技巧仅适用于 10.6 和 AFAICT,仅适用于 /usr/bin 中 Apple 提供的 Python 2.5 和 2.6。 (是的,手册页表明它适用于 3.0,我猜它曾经计划与 10.6 一起发布,但不是)。而且,在过渡的这一点上,让python 引用 Python 3 实例也是一个非常糟糕的主意。 python3 应用作通用参考。
    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 2020-11-15
    • 2011-06-07
    相关资源
    最近更新 更多