2011-05-01 204 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

相關問題