Python在Mac OS X Lion中自动别名化
我一直在努力把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 个回答
我一直在努力把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安装,而不是自己尝试安装。