2010-06-18 71 views
1

我最近在OS X的2.6.1上安裝了python 2.6.5。除了當我嘗試通過Applescript編輯器執行python腳本時,一切正常。如果我執行下面的行我得到2.6.1版本:AppleScript使用錯誤的python版本,如何更改?

的AppleScript:

do shell script "python -c \"from sys import version; print version\"" 

但是,如果我在OS X終端執行類似的線,我得到2.6.5版本:

OS X端子:

python -c "from sys import version; print version" 

什麼可能是錯誤的?難道這可以很容易地修復?

+0

如何你究竟覆蓋安裝? python 2.6.1和2.6.5在哪裏? – Mark 2010-06-18 11:27:31

+0

I ment我安裝了2.6.5並行於2.6.1,但2.6.5是主要的Python解釋器......大部分時間看起來似乎。我使用OS X安裝程序磁盤映像,從未指定文件應該放在哪裏。 2.6.1已預裝。我之前在兩個不同的mac上做了同樣的事情(都是雪豹),所以我有點困惑。 – bennedich 2010-06-18 22:14:46

回答

0

Python的2.6.5安裝程序會修改你的~/.bash_profile文件放的Python 2.6.5的bin目錄在你$PATH開始,在/usr/bin之前,這是操作系統默認的Python解釋器所在的位置。當您通過終端登錄時會自動讀取該配置文件,但在使用do shell script時不會自動讀取該配置文件。要麼你需要指定到你想要的python可執行文件(可能是最好的選擇)的完整路徑,或者你可以有你的腳本讀取bash的輪廓事先(雖然知道do shell script使用sh,不bash):

do shell script ". ${HOME}/.bash_profile; python -c 'import sys; print(sys.version)'" 
+0

您的解決方案都能正常工作,我會解決其中的一個。謝謝! – bennedich 2010-06-19 13:11:35

1

我不會推薦覆蓋系統安裝的python(或任何UNIX命令),因爲某些系統應用程序可能取決於安裝的python特定版本的特殊情況。

現在很習慣在完全不同的路徑上安裝python(或perlruby)的另一個不同副本。 然後,在bash的情況下,在.profile等中正確設置路徑,以便在您安裝的命令行python中進行選擇。

但請注意,GUI應用程序繼承了系統的環境變量,不讀.profile或其他任何東西。有一種方法可以更改GUI應用程序看到的環境變量PATH(請參閱here),但我不推薦它。

你在哪裏安裝了python 2.6.5?說這是在

/usr/local/bin/python 

然後在你的AppleScript代碼,你就可以說

do shell script "/usr/local/bin/python -c ... ." 
+0

這個作品,謝謝!只希望它能在沒有指定解釋器的情況下工作,例如:do shell腳本「/Users/Me!/test.py」 – bennedich 2010-06-18 22:36:23

+0

您可以在'python'文件的開頭放置'#!'行。見http://en.wikipedia.org/wiki/Shebang_(Unix)。你需要在頭部寫一些'#!/ usr/local/bin/python'。是的,你需要把完整的道路放在那裏。 – Yuji 2010-06-19 02:59:58

+0

我已經指定了正確的shebang :(只有當applescript本身選擇python解釋器時纔會出現這個問題。 – bennedich 2010-06-19 13:02:53

0

mac默認安裝將python放置在/usr/bin中,python安裝程序將其放置在框架中,其鏈接位置爲/usr/local/bin。就在的/ usr/bin中刪除舊版本,並創造新的符號鏈接

ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python /usr/bin/python