2013-03-15 21 views
6

我一直在努力将Python 2.7设置为我系统上的默认Python。Python在Mac OS X Lion中被自动别名

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

有一次,有人建议我尝试一个软件包管理器(MacPorts/Fink/Homebrew),但我认为这可能是一个糟糕的主意。

总体问题是,在某种程度上,Python 2.6在每次启动shell时都将自动别名作为默认python。我已经通过了我的.profile和.bashrc,并且没有可以替代它们的命令。

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

而且,我的/ usr /斌/ Python是没有别名任何东西,和/ usr/local/bin目录是:/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

+0

附注:您是否考虑过使用'virtualenv'?无论您想要什么样的Python安装(Apple或其他),您都可以设置所需的多种虚拟环境,并且可以随时明确选择想要激活的那个。 – abarnert 2013-03-15 19:10:28

+0

我正在认真考虑它。 – espais 2013-03-15 19:25:47

+0

'virtualenv'真的很酷。有一个原因是它被添加到3.3的标准库中。一旦你处于需要关注你的环境的情况下(实际上,一旦你不只是使用系统的默认Python 2.x,特别是如果你正在安装另一个相同的2.x版本的副本你已经拥有了,你是),你可以明确而容易地做到这一点。 – abarnert 2013-03-15 19:33:29

回答

5

我一直在制定的Python 2.7奋力是默认的Python我系统。

它已经是。当你打开一个清晰的Lion框,并将python输入到shell中时,它会运行/usr/bin/python,它是Python 2.7.2。

Python 2.6中带着我的操作系统

狮配备了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更高的位置。

如果你已经安装了“framework build”(你应该有),那么将会有一个目录/Library/Frameworks/Python.framework/Versions/2.7/bin,你可以放在PATH的顶部。这可以避免影响/ usr/local和/ usr的顺序,这意味着您可以使用由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 . If you also install pip`您定制的Python,你不希望它出现在同一个地方;否则,无论您最后安装的是哪个,都会取代另一个。

如果您的系统没有安装框架的构建,或者你已经配置了它的脚本安装到/usr/local/bin无论如何,或者你想影响的/ usr /本地的订单,只是把/usr/local/bin在顶部您路径。

不知何故,Python 2.6中是越来越自动别名为我的默认蟒每次我的壳开始

通过自动别名,你的意思是有一个bash alias?如你在输入alias,它给你一个列表,包括python

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

如果~/.*中没有别名命令,请查看/etc/。如果你使用grep -r alias /etc,它会给你一个很大的列表,你必须跳过邮件别名和apache别名(可能有一些权限被拒绝输出到stderr),但是在那之后,应该没有shell别名。

而且,我的/ usr /斌/ Python是没有别名任何东西,

这让我想你混淆混淆和符号链接。他们不是一回事。哪一个是问题?在修复之前,你必须知道什么是错误的。

所以,试试这个:

which python 

它应该是/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过敏,全局文件是世界可写的,或者出于其他原因,你不能使用Apple的,从python.org或Homebrew安装,而不是自己尝试。

+0

实际上,您在/ etc中查找别名的注释工作...有一个/ etc/profile自动添加了2.6别名。一旦被删除,一切都开始回落......谢谢! – espais 2013-03-15 19:41:55

+3

你可能想知道别名来自哪里,因为......发生在你背后的是一件非常奇怪的事情,如果你安装了某个安装程序或者做了某些事情,它可能会完成所有其他不好的事情...... – abarnert 2013-03-15 19:43:06