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


27

我最近将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.
>>>

我查看了一下,/usr/bin/发现要获取Python 2.6,必须输入python2.6

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

Answers:


21

这简单:

defaults write com.apple.versioner.python Version 2.6

有关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- 开头的可执行脚本,这都是正确的-我获得了预期的Python版本。

这不能解决/System/Library/Frameworks/Python.framework/Versions中的符号链接,其中Current指向2.7可能会引起问题(因为它仍在2.6版本的sys.path中!)

确实,它不能解决该符号链接。

但是,请运行一个简短的脚本,print()该脚本的路径sys.path 2.6和库目录(至少在我的相对默认设置中),而路径上没有 2.7目录。路径上也没有符号链接目录。因此,对于大多数脚本来说,这应该不是问题。Current

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


3
你是对的。我很早以前就安装了MacPython,它搞砸了我python指向的PATH变量/Library/Frameworks/Python.framework/Versions/Current/bin。当然,那并没有升级到2.6。因此,我用在Google上找到的默认变量替换了PATH变量,现在将从系统中删除MacPython。
SBSTN

@SBSTN我遇到了相同的问题(指向的python路径/Library/Frameworks/Python.framework/Versions/Current/bin)如何更改此设置?
Zach

不能与Xcode4一起使用,因为不再有/ Library / Frameworks / Python *,也没有/ usr / bin / python指向其他任何地方。有任何想法吗?MacPorts将是一个解决方案,但我不想安装它。
亚历克斯(Alex)

我已经安装了Xcode 4,它仍然可以按照所述方式工作。/usr/bin/python是可执行文件,而不是链接。/usr/bin/python2.6是指向的链接../../System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6。鉴于其中包含Python可执行文件,/System/Library无论是否安装了Xcode版本/ Xcode都应该可用。
内特

这不符合人们的要求。不知道为什么会这样。
010110110101 2012年

12

我建议使用Mac端口...

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

首先安装python_select软件包:

sudo port install python_select

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

port select --list python     (MacPorts 2.x)
python_select -l              (MacPorts 1.x)

就我而言,它至少打印了python版本,默认情况下是Snow Leopard:附带的python26-apple

port select --show python     (MacPorts 2.x)
python_select -s              (MacPorts 1.x)

显示当前选择的版本,例如python26-apple。因此,您会看到,此软件包可与Mac完美配合使用。有关更多选项的问题

port select                   (MacPorts 2.x)
python_select -h              (MacPorts 1.x)

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

port search python

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

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

sudo port install python24

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

sudo port select --set python python24  (MacPorts 2.x)
sudo python_select python24             (MacPorts 1.x)

这些命令在外壳之间是持久的。


5

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

% type -a python

这将在PATH中显示所有“ python”可执行文件,别名,shell内置文件(可能没有)或bash函数。

这应该可以帮助您更好地确定此处发生的情况。


3

您要创建一个指向所需版本的符号链接。

cd /Library/Frameworks/Python.framework/Versions 
sudo rm Current 
sudo ln -s /Library/Frameworks/Python.framework/Versions/2.6 Current

这将删除当前指向默认Python版本的指针,并将其设置为2.6版本。


1
这类似于我所做的。但是相反,我将链接放在/ usr / bin中,并将其称为“ python”(覆盖了苹果放在那的旧的“ python”可执行文件)。因此:sudo ln -s /path/to/2.7 /usr/bin/python。这是在Linux中完成的方式,这很有意义。
Nacht 2012年

0

不太理想(IMO),但这解决了所有python在my中寻找的应用程序的问题/usr/local/bin/

sudo cp /usr/local/bin/python3 /usr/local/bin/python

当然,安装最新的Python版本之后。


这真是个坏主意。可以理解使用symlink,但是来回复制二进制文件不是一个好主意。
雅库耶2015年

理解了,我只想在终端中键入python并将其指向Python3.x ...正确修复此问题还为时不晚。
AGDM 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.