Python在Mac OS X Lion中自动别名化

6 投票
1 回答
743 浏览
提问于 2025-04-17 19:15

我一直在努力把Python 2.7设置为我系统默认的Python版本。

我的操作系统自带的是Python 2.6,后来我又安装了2.7(是从源代码安装的),现在想把它设为默认版本。

有一段时间有人建议我试试包管理工具(比如MacPorts、Fink或Homebrew),我也试了,但我觉得这可能是个坏主意。

总的来说,问题是每次我打开终端时,Python 2.6总是被自动设置为默认的Python。我查看了我的.profile和.bashrc文件,里面没有任何可能导致这个问题的命令。

我还把默认路径设置为优先查看/Library/Frameworks/Python.framework/Versions/2.7/bin。我也尝试了这个SO帖子和这个SU帖子里的建议,但都没有效果。我需要把2.7设为默认,因为我有一些脚本依赖于argparse等模块。

另外,我的/usr/bin/python没有被设置为任何别名,而/usr/local/bin的设置是:/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

1 个回答

5

我一直在努力把Python 2.7设置为我系统的默认Python版本。

其实它已经是默认的了。当你打开一个干净的Lion系统,输入python命令时,它会运行/usr/bin/python,这个就是Python 2.7.2。

我的操作系统自带的是Python 2.6。

Lion系统自带了2.5、2.6和2.7,还有一个隐藏的2.3。

它们都安装在/System/Library/Frameworks/Python.framework/Versions目录下。除了2.3以外,其他版本都有一个符号链接/usr/bin/python2.x,在一个干净的系统中,这个链接会是你PATH中第一个找到的名字,所以输入python2.6会运行2.6,而python2.7会运行2.7。

另外,/usr/bin/python还有一个特殊的包装,它默认运行2.7,但你可以通过VERSIONER_PYTHON_VERSION或者com.apple.versioner.python的设置来配置它。

我之后安装了2.7(从源代码编译),并且一直在尝试把它设为我的默认版本。

你说的“默认版本”是什么意思?是想让它在你打开新的终端时输入python时运行,还是在脚本中用#!/usr/bin/env python作为开头?

最简单的方法是把你安装的目录放在PATH的前面,超过/usr/bin。

如果你安装的是“框架版本”(你应该是这样做的),会有一个目录/Library/Frameworks/Python.framework/Versions/2.7/bin,你可以把它放在PATH的最前面。这样就不会影响/usr/local和/usr的顺序,而且你可以使用通过Python的setup.py安装的任何脚本,而不需要把它们符号链接到/usr/local/bin。

这很重要,因为苹果的Python会把脚本安装到/usr/local/bin。例如,如果你运行/usr/bin/easy_install-2.7 pip,你会得到/usr/local/bin/pip/usr/local/bin/pip-2.7。如果你也为你自定义的Python安装了pip,你不想让它们出现在同一个地方;否则,最后安装的会替换掉之前的。

如果你没有安装框架版本,或者你已经配置它安装脚本到/usr/local/bin,或者你改变/usr/local的顺序,那就把/usr/local/bin放在PATH的最前面。

不知怎么的,每次我打开shell时,Python 2.6都被自动设置为我的默认Python。

alias吗?也就是说你输入alias后,会看到包括python在内的一系列内容?

如果是这样,你需要修复这个问题,而不是在上面再加一个解决方法来抵消它的影响。

如果在~/.*中没有找到alias命令,可以去/etc/看看。如果你运行grep -r alias /etc,会得到一大堆结果,你需要跳过邮件别名和apache别名(可能还会有一些权限拒绝的输出),但之后应该没有shell别名。

此外,我的/usr/bin/python没有被设置为任何别名。

这让我觉得你可能搞混了别名和符号链接。它们不是同一回事。到底哪个有问题?你得先知道出错的地方,才能修复它。

所以,试试这个:

which python

如果你的PATH设置正确,它应该是/Library/Frameworks/Python.framework/Versions/2.7/bin/python。如果不是,那说明你的PATH设置有问题,运行echo $PATH看看。

如果确实是这样,那么运行ls -l /Library/Frameworks/Python.framework/Versions/2.7/bin/python。它应该是指向python2.7./python2.7的符号链接,而不是指向其他目录的。如果不是,那说明你的安装有问题,最好的办法是卸载Python然后重新安装。或者干脆重新安装,直接用苹果的版本。或者,如果你确实需要2.7.3而不是2.7.2,或者需要构建独立的py2app包(特别是如果你需要它们兼容旧版OS X),或者你不想用sudo,希望系统文件可以被所有人写入,或者出于其他原因不能使用苹果的版本,那就从python.org或Homebrew安装,而不是自己尝试安装。

撰写回答