2012-10-28 27 views
0

Snow Leopard的默認python版本是2.6。我決定使用python網站的安裝程序升級到3.2,它安裝了python的32位和64位版本(對某些庫很有用)。Python版本在提示時爲3.2,腳本爲2.6

問題是我的Python腳本寫得像3.2解釋爲2.6,我的Python shell解釋爲3.2 我寫的東西可能沒有意義。

所以我有一個腳本,這樣說:

#!/usr/bin/python 
import sys 
print(sys.version)#note the python 3 syntax 

當我運行它,我得到這個:

$ ./test.py 
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] 

當我在Python提示符運行同樣的事情,我得到這個:

$python 
Python 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys 
>>> print(sys.version) 
3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] 
>>> 

問題是,我該如何解決這個問題?我認爲這是一個安裝問題。 編輯使名稱更有用。

+1

'python'應該運行python 2; python 3二進制文件應該被稱爲「python3」。最近有一個PEP來達到這個效果。 – geoffspear

回答

1

在命令行鍵入which python並報告結果。我敢打賭,你的路徑是因爲某種原因找到了Python 3.3,並且它與/usr/bin/python不一樣。如果它們不同,請在腳本中使用#!/usr/bin/env python來使用path env變量而不是絕對路徑來查找python。

+0

根據你的建議:'$ which python /usr/bin/python ' 這裏沒有意外。 – Muricula

+0

...嗯!這是意想不到的!你有沒有嘗試將腳本的第一行切換到'#!/ usr/bin/env python'並查看是否有幫助? –

+0

我按照你的建議修改了我的測試腳本,把第一行改成'#!/ usr/bin/env python'。它沒有解決我的問題。 – Muricula

0

瞭解路徑中的優先級(/ usr/bin或/ usr/local/bin)非常重要,在終端中顯示的是「哪個python」?你需要編輯你的.bash_profile並添加新的python二進制文件的路徑,並且在腳本中改變#!/ usr/bin/python指向新的python,就像#!/ usr/local/bin/python - 無論安裝程序將Python 3.x放在哪裏

+0

以下是自動遷移工具添加到我的.bash_profile末尾的內容:$ cat〜/ .bash_profile |爲Python 3.2 #尾巴 #設置PATH原單版本保存在.bash_profile.pysave PATH = 「/庫/框架/ Python.framework /版本/ 3.2/bin中:$ {PATH}」 出口PATH 別名「 python'='python3.2' ' – Muricula

0

我仍然不知道爲什麼在腳本中運行python會給我2.6 python,即使在提示符下運行python也會給我3.2 python。我確實修復了它。 我找到了python3二進制文件,並將其更名爲/usr/bin中有問題的python二進制文件。然後我做了從/usr/bin/python/Library/Frameworks/Python.framework/Versions/3.2/bin/python3

的符號鏈接我仍然好奇原始問題是什麼,但它現在已經修復。

1

根據你在你的澄清中寫道,在你的.bash_profile的末端有被定義的別名:

alias python=python3.2 

這是罪魁禍首。考慮放棄它,你有一個更透明和直觀的情況。

「哪個python」(我認爲它是/ usr/bin/which)沒有解決你感知的謎題,因爲它不知道別名。它只在你的路徑中找到一個python二進制文件。