2011-05-01 251 views
42

我已经在我的Mac中安装了python 3.2。在我运行/Applications/Python 3.2 /更新Shell Profile.command和后,我感到困惑的是,当我在终端输入python -V它说Python 2.6.1,我该如何更改默认的python版本?如何更改默认的python版本?

+0

相关:http://stackoverflow.com/a/18425592/939986 – 2015-12-04 18:38:50

回答

54

这可能是向后兼容的理想选择。

Python3打破向后兼容性,调用'python'的程序可能期望python2。你可能有很多程序和脚本,你甚至都没有意识到哪些期望python = python2,并且改变它会破坏这些程序和脚本。

您可能正在寻找的答案是您不应该更改此

但是,您可以在您的shell中创建一个自定义别名。你这样做的方式取决于壳,但也许你可以做alias py=python3

如果你困惑于如何启动最新版本的Python,它至少在Linux上的情况是python3离开你python2安装完好(由于上述兼容性原因);因此您可以使用python3命令启动python3。

+6

这是有用的信息,但问题是“我怎样才能更改默认的Python版本“。我们可以添加一些东西来帮助人们试图做到这一点? – dmeyerson 2016-09-02 14:27:52

0

根据快速谷歌搜索,此更新仅适用于您打开的当前shell。它可以通过键入python3来解决,因为mac和linux足够类似于这样的事情。 Link to the result of google search.

此外,正如ninjagecko所言,大多数程序还没有更新到3.x,所以将默认python设置为3.x会破坏应用程序中使用的许多python脚本。

13

更改“默认”的Python通过把它提前了系统的Python的路径,例如:

export PATH=/usr/local/bin:$PATH 
+0

我的假设是,通过这样做你可以在Mac上破坏某些东西。由于有很多使用“python”别名的程序和脚本。如果突然间,由于PATH的优先级改变,他们开始指向Python3而不是Python2--这可能会破坏某些东西。潜在的整个操作系统......这是我的假设,但没有经过测试。 – Aivoric 2015-07-31 08:35:04

+1

任何系统软件都将使用Python提供的系统的完整路径。 – 2015-07-31 18:52:50

34

在Mac OS X上使用的python.org安装程序,你显然有,你需要用python3调用Python 3,而不是python。这是目前为Python 2版本保留的。您也可以使用python3.2来专门调用该版本。

$ which python 
/usr/bin/python 
$ which python3 
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3 
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/ 
$ ls -l 
total 384 
lrwxr-xr-x 1 root admin  8 Apr 28 15:51 [email protected] -> 2to3-3.2 
-rwxrwxr-x 1 root admin 140 Feb 20 11:14 2to3-3.2* 
lrwxr-xr-x 1 root admin  7 Apr 28 15:51 [email protected] -> idle3.2 
-rwxrwxr-x 1 root admin 138 Feb 20 11:14 idle3.2* 
lrwxr-xr-x 1 root admin  8 Apr 28 15:51 [email protected] -> pydoc3.2 
-rwxrwxr-x 1 root admin 123 Feb 20 11:14 pydoc3.2* 
-rwxrwxr-x 2 root admin 25624 Feb 20 11:14 python3* 
lrwxr-xr-x 1 root admin  12 Apr 28 15:51 [email protected] -> python3.2-32 
lrwxr-xr-x 1 root admin  16 Apr 28 15:51 [email protected] -> python3.2-config 
-rwxrwxr-x 2 root admin 25624 Feb 20 11:14 python3.2* 
-rwxrwxr-x 1 root admin 13964 Feb 20 11:14 python3.2-32* 
lrwxr-xr-x 1 root admin  17 Apr 28 15:51 [email protected] -> python3.2m-config 
-rwxrwxr-x 1 root admin 25784 Feb 20 11:14 python3.2m* 
-rwxrwxr-x 1 root admin 1865 Feb 20 11:14 python3.2m-config* 
lrwxr-xr-x 1 root admin  10 Apr 28 15:51 [email protected] -> pythonw3.2 
lrwxr-xr-x 1 root admin  13 Apr 28 15:51 [email protected] -> pythonw3.2-32 
-rwxrwxr-x 1 root admin 25624 Feb 20 11:14 pythonw3.2* 
-rwxrwxr-x 1 root admin 13964 Feb 20 11:14 pythonw3.2-32* 

如果您也从python.org安装一个Python 2,这将有(除2to3的)没有重叠的文件名类似的框架bin目录。

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command 
$ sh -l 
$ echo $PATH 
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 
$ which python3 
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3 
$ which python 
/Library/Frameworks/Python.framework/Versions/2.7/bin/python 
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin 
$ ls -l 
total 288 
-rwxrwxr-x 1 root admin 150 Jul 3 2010 2to3* 
lrwxr-x--- 1 root admin  7 Nov 8 23:14 [email protected] -> idle2.7 
-rwxrwxr-x 1 root admin 138 Jul 3 2010 idle2.7* 
lrwxr-x--- 1 root admin  8 Nov 8 23:14 [email protected] -> pydoc2.7 
-rwxrwxr-x 1 root admin 123 Jul 3 2010 pydoc2.7* 
lrwxr-x--- 1 root admin  9 Nov 8 23:14 [email protected] -> python2.7 
lrwxr-x--- 1 root admin  16 Nov 8 23:14 [email protected] -> python2.7-config 
-rwxrwxr-x 1 root admin 33764 Jul 3 2010 python2.7* 
-rwxrwxr-x 1 root admin 1663 Jul 3 2010 python2.7-config* 
lrwxr-x--- 1 root admin  10 Nov 8 23:14 [email protected] -> pythonw2.7 
-rwxrwxr-x 1 root admin 33764 Jul 3 2010 pythonw2.7* 
lrwxr-x--- 1 root admin  11 Nov 8 23:14 [email protected] -> smtpd2.7.py 
-rwxrwxr-x 1 root admin 18272 Jul 3 2010 smtpd2.7.py* 
+0

这应该是最高的答复恕我直言。 – dirkk0 2013-11-16 07:58:24

+0

关于“目前保留给Python 2版本”,你有链接吗? – Wildcard 2016-07-02 04:15:28

+1

@Wildcard,请参阅PEP 394:https://www.python.org/dev/peps/pep-0394/#recommendation – 2016-07-02 20:06:06

4

我使用OS X 10.7.5和Python 3.4.2。如果你键入python3以及你想要运行什么,它将使用python 3运行它。例如 pyhton3 test001.py。我运行了一个名为test001的测试程序。我希望这有帮助。

+4

欢迎使用堆栈溢出!看起来你的回答并不是问题的真正答案。如果您想修复它,请参阅http://stackoverflow.com/help/how-to-answer寻求帮助。 – Others 2015-02-28 22:05:09

+0

我花了几个小时试图让python3在我的Mac上工作 - 原来输入'python3'而不是旧的'python'做了伎俩。 – YCode 2017-12-31 21:03:41

16

老问题,但也可以使用:

virtualenv --python=python3.5 .venv 
source .venv/bin/activate 
+0

当然,但如果您没有可执行文件(例如python3.5),此解决方案无法正常工作。 – 2016-11-23 13:22:56

+0

我认为这涵盖了http://stackoverflow.com/questions/5506110/is-it-possible-to-install-another-version-of-python-to-virtualenv – FreshPow 2016-11-28 22:25:14

相关问题