如何更改 Snow Leopard 上的默认 Python 版本?

SBS*_*STN 27 mac bash python osx-snow-leopard

我最近将我的 Mac OS X 10.5 Leopard 安装升级到 10.6 Snow Leopard,随之而来的是 Python 的升级版本 2.6.1(如果是 2.5.1)。现在,当我python在终端中输入时,我仍然得到

Python 2.5.1 (r251:54869, Apr 18 2007, 22:08:04) 
[GCC 4.0.1 (Apple Computer, Inc. build 5367)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)

我查看/usr/bin/并发现要获得 Python 2.6,我必须输入python2.6.

问题是:如何将python命令映射到 Python 2.6?

Nat*_*ate 21

这很简单:

defaults write com.apple.versioner.python Version 2.6
Run Code Online (Sandbox Code Playgroud)

请参阅man pythonApple 的完整解释。

此外,还有一个问题:确保您运行的是计算机附带的 Python,而不是您安装的其他 Python。通过which python在命令提示符下键入来执行此操作。它应该指向/usr/bin/python. 我之所以提到这一点,是因为我在 Snow Leopard 下的默认值为 2.6(使用 Leopard 时为 2.5)。因此,您获得 2.5 的事实可能表明您的路径中还有其他内容。

更新

要解决以下评论:

这不符合人们的要求。

它对我有用,在 OS X 10.8.2 中。做defaults write com.apple.versioner.python Version 2.6了之后,Python的默认版本确实是2.6。(同样在改回 2.7 之后。)

无论我是python直接运行,还是使用以#!/usr/bin/env python—I get the expected version of Python开头的可执行脚本,都是如此。

这并没有解决 /System/Library/Frameworks/Python.framework/Versions 中的符号链接,其中 Current 指向 2.7 这可能会导致问题(因为它仍然在 sys.path 中 2.6 !)

事实上,它并没有修复那个符号链接。

然而,运行一个小脚本print()S中sys.path和(至少在我相对默认设置)2.6库目录在路径和2.7迪尔斯是不是在道路上。Current路径上的符号链接目录也不是。所以对于大多数脚本来说应该不是问题。

但是,有可能(尚未测试)Current符号链接由easy_install或 使用pip。那会引起问题。当您更新 Python 版本时,符号链接没有更新,这确实看起来像是一个错误。

  • 你是对的。我很久以前安装了 MacPython 并且搞砸了我的 PATH 变量,所以 `python` 指向 `/Library/Frameworks/Python.framework/Versions/Current/bin`。自然没有升级到2.6。所以我用我在 Google 上找到的默认变量替换了我的 PATH 变量,现在将从我的系统中删除 MacPython。 (3认同)

小智 12

我建议使用mac端口...

有一个名为 python_select 的包,它允许并行使用 python。因此,如果尚未安装,请先安装mac 端口

首先安装 python_select 包:

sudo port install python_select
Run Code Online (Sandbox Code Playgroud)

现在您已经可以检查系统上可用的 Python 发行版了。只需发出命令:

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)
Run Code Online (Sandbox Code Playgroud)

就我而言,它至少打印了雪豹默认附带的 python 版本:python26-apple.

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)
Run Code Online (Sandbox Code Playgroud)

显示当前选择的版本,例如python26-apple。所以你看,这个包很好地与 Mac 一起玩。更多选项问题

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)
Run Code Online (Sandbox Code Playgroud)

您可以在端口存储库中搜索可用的 python 版本:

port search python
Run Code Online (Sandbox Code Playgroud)

这将产生一长串可用的python。

要安装所需的软件包,例如 python 2.4,请执行:

sudo port install python24
Run Code Online (Sandbox Code Playgroud)

现在python_select -s也将显示新安装的python。切换到 python 2.4 问题:

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)
Run Code Online (Sandbox Code Playgroud)

此命令在 shell 之间是持久的。


Dou*_*ris 5

假设您正在使用 bash,请键入:

% type -a python
Run Code Online (Sandbox Code Playgroud)

这将向您显示 PATH 中的所有“python”可执行文件、别名、shell 内置程序(可能没有)或 bash 函数。

这应该可以帮助您更好地确定这里发生了什么。