2011-08-30 44 views
29

我的电脑python 2而不是python 3作为(临时)默认的python?

~$ python -V 
Python 3.2.1 

上,但我得到了问题,当我运行一些Python程序。我的猜测是(或至少我想尝试这个),有一些向后兼容性问题,我想与

python2 2.7.2-2 

这也是安装在我的系统上运行的Python脚本,但我不知道如何使其成为(临时)默认的python。 python脚本开始于

#!/usr/bin/env python 

我正在使用arch linux。

+2

你为什么不只是改变的家当? –

+2

请记住,Arch Linux是使python成为python3的极少数Python发行商之一。这在Python世界中一直是一个有争议的举动。查看关于PEP 394草案的讨论(http://www.python.org/dev/peps/pep-0394/)。 –

回答

50

您可以使用virtualenv

# Use this to create your temporary python "install" 
# (Assuming that is the correct path to the python interpreter you want to use.) 
virtualenv -p /usr/bin/python2.7 --distribute temp-python 

# Type this command when you want to use your temporary python. 
# While you are using your temporary python you will also have access to a temporary pip, 
# which will keep all packages installed with it separate from your main python install. 
# A shorter version of this command would be ". temp-python/bin/activate" 
source temp-python/bin/activate 

# When you no longer wish to use you temporary python type 
deactivate 

享受!

+4

谢谢,好,简单的想法。有时候,有数百个python脚本运行彼此,而大型构建系统中却没有,并且它们都具有env python,所以更改每个文件都不是一个选项。 –

+1

同上。许多开源软件包假设python指的是python2。这是一个简单的方法来获取bash或zsh将python2映射到python,而构建该包。当前版本的virtualenv改变了提示,所以当你完成时有一个很好的视觉提醒去运行停用。 – WeakPointer

9

只需使用python2.7或python2而不是python来调用脚本。

所以:代替

python2 myscript.py 

python myscript.py 

什么,你可以交替做的是更换符号链接 “蟒蛇” 在目前链接一个链接到python3的/ usr/bin中到所需的python2/2.x可执行文件。然后你可以像使用python 3那样调用它。

2

使用python命令启动脚本,而不是直接使用shell。例如。

python2 /usr/bin/command 

AFAIK这是推荐的方法,用于解决env解释器行不良的问题。

8

你不希望有一个 “临时默认的Python”

你想2.7脚本开始

/usr/bin/env python2.7 

并且希望3.2的脚本开始与

/usr/bin/env python3.2 

对于“默认”Python真的没有用处。而“暂时违约”的想法只是一条绝对混乱的道路。

请记住。

显式比隐式更好。

+0

从默认安装,不是'python27'和'python32'吗? – Edwin

+1

@Edwin:不在我的电脑上。它是'/ usr/bin/env python2.7'。 –

+5

问题并没有说用户创建了python脚本:它们可能是第三方脚本,在这种情况下,我们不希望更改它们的所有脚本,特别是在某些版本控制下时,我们的更改会被删除我们更新脚本。在这种情况下,我们确实需要以某种方式临时将python2设置为python。比较好的例子是google的nacl sdk,它在archlinux上导致问题,因为它期望python是python2。 – Martinsos

6

你可以使用alias python="/usr/bin/python2.7"

bash-3.2$ alias 
bash-3.2$ python 
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> ^D 
bash-3.2$ alias python="/usr/bin/python3.3" 
bash-3.2$ python 
Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> 
+0

别名不会被子shell所继承,所以这只会在直接调用python时才起作用。 – gerrard00

7
mkdir ~/bin 
PATH=~/bin:$PATH 
ln -s /usr/bin/python2 ~/bin/python 

要停止使用python2,exitrm ~/bin/python

+0

简单而简单!不需要virtualenv。 – lesmana

2

如果你有一些问题的virtualenv,

您可以使用它:

sudo ln -sf python2 /usr/bin/python 

sudo ln -sf python3 /usr/bin/python 
相关问题