Python在Mac OS X Lion中自动使用别名

时间:2013-03-15 18:44:34

标签: python macos python-2.7 installation

我一直在努力将Python 2.7设置为我系统上的默认Python。

Python 2.6附带了我的操作系统,我已经安装了2.7(来自源代码)并且一直试图将其作为我的默认版本。

有一次,有人建议我尝试一个软件包管理器(MacPorts / Fink / Homebrew)并且我做了,我认为这可能是一个坏主意。

整体问题是,在某个地方,不知何故,每次我的shell启动时,Python 2.6都会将自动别名作为我的默认python。我已经浏览了我的.profile和.bashrc,并且没有可以对它们进行别名的命令。

我还设置了默认路径,首先查看/Library/Frameworks/Python.framework/Versions/2.7/bin。我也试过这个SO postSU post中的建议无济于事。我需要使用2.7作为我的默认值,因为我的脚本依赖于argparse等等。

此外,我的/ usr / bin / python没有别名,而/ usr / local / bin是:/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

1 个答案:

答案 0 :(得分:5)

  

我一直在努力将Python 2.7设置为我系统上的默认Python。

已经是。当你选择一个清晰的Lion框并在shell中输入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_VERSIONcom.apple.versioner.python首选项进行配置。

  

我已经安装了2.7(来自源代码)并且一直试图将其作为我的默认版本。

“默认版”是什么意思?您是否希望它在新的终端shell中键入python时运行,或者在脚本中使用#!/usr/bin/env python作为shebang行?

最简单的方法是将你安装它的任何目录放在PATH上比/ usr / bin更高。

如果您已经安装了“框架构建”(您应该拥有),则会有一个目录/Library/Frameworks/Python.framework/Versions/2.7/bin,您可以将其放在PATH的顶部。这样可以避免影响/ usr / local和/ usr的顺序,这意味着您可以使用Python setup.py安装所安装的任何脚本,而无需将它们符号链接到/ usr / local / bin。

这很重要,因为Apple的Python会将脚本安装到/ usr / local / bin中 - 例如,如果你/usr/bin/easy_install-2.7 pip,你将获得/usr/local/bin/pip和/ usr / local / bin / pip -2.7 . If you also install pip为你的自定义Python,你不希望它出现在同一个地方;否则,你最后安装的那个替换另一个。

如果您没有安装框架版本,或者您已将其配置为安装脚本到/usr/local/bin,或者想要影响/ usr / local的顺序,只需将/usr/local/bin放在路径的顶部。

  

不知何故,每次我的shell启动时,Python 2.6都会将自动别名作为我的默认python

通过自动别名,你的意思是有一个bash alias?在您输入alias时,它会为您提供一系列内容,包括python

如果是这样,你需要解决这个问题,而不是尝试在它上面堆积另一个黑客来撤消它所具有的任何效果。

如果~/.*中没有别名命令,请查看/etc/。如果你grep -r alias /etc,它会给你一个大的列表,你将不得不跳过邮件别名和apache别名(可能还有一些权限被拒绝输出到stderr),但在那之后,应该有没有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并正确地重新安装。或者只是重新安装它,并使用Apple的。或者,如果您确实需要2.7.3而不是2.7.2,或者您需要构建独立的py2app捆绑包(特别是如果您需要它们与较旧的OS X兼容),或者您对{{{{}}过敏1}}并且希望系统范围的文件是世界可写的,或者由于某些其他原因你无法使用Apple,可以从python.org或Homebrew安装,而不是自己尝试。