2009-09-05 20 views
5

如果您安裝了多個版本的python(我目前有默認的2.5,安裝了3.0.1,現在安裝了2.6.2),它會自動將東西放入/usr/local,並且它還調整路徑以包含/Library/Frameworks/Python/Versions/theVersion/bin,但是當/usr/local已經在PATH上時,以及所有已安裝的版本(除了缺省值2.5,在/usr/bin之外)是否在那裏?我從我的PATH .bash_profile中刪除了Python框架路徑,而且我仍然可以鍵入"python -V" => "Python 2.5.1""python2.6 -V" => "Python 2.6.2","python3 -V" => "Python 3.0.1"。只是想知道爲什麼它把它放入/usr/local,並且還改變了PATH。我做得很好嗎?謝謝。OS X - 多個python版本,PATH和/ usr/local

另外,2.6的安裝使得它「當前」之一,擁有.../Python.framework/Versions/Current點至2.6,所以普通的「巨蟒」的東西在/usr/local/bin點至2.6,但它並不重要,因爲usr/bin至上和事物與同樣的名字在那裏指向2.5的東西..無論如何,2.5自帶豹,我安裝3.0.1只是爲了有最新版本(有一個dmg文件),現在我安裝了2.6.2與pygame一起使用。

編輯:好的,這是我的理解。當您安裝Python 2.6.2時: 一系列符號鏈接被添加到/usr/local/bin,因此當Python腳本中有一個#! /usr/local/bin/python shebang時,它將運行,並且在/Applications/Python 2.6中,Python啓動程序將成爲默認應用程序以運行。 py文件,它使用/usr/local/bin/pythonw/Library/Frameworks/Python.framework/Versions/2.6/bin創建並添加到路徑的前面,所以which python將得到python,並且#! /usr/bin/env python shebang的將正確運行。

+0

python的virtualenv包怎麼樣?這似乎是在一臺機器上安裝多個python的相當流行的方式。有其他用戶在他們的OS X機器上完成了這項工作嗎 – Foofy

回答

5

沒有先驗保證/ usr/local/bin會保留在PATH上(特別是它不一定會保留在「/ usr/bin! - 」的前面),所以安裝者確保完全合理具體需要的/Library/.../bin目錄在PATH上得到。另外,可能出現這樣的情況,即/Library/.../bin有補充的東西,不會被鏈接到/ usr/local/bin中,儘管我相信目前對於Python的最新Mac標準版本來說並不是這種情況。

如果您知道您將安排路徑的方式以及您要使用的可執行文件的確切集合完全從/ usr/local/bin中滿足,那麼您可以刪除/圖書館/ etc目錄,當然,從你自己的路徑。

+0

如果我刪除了Python 2.6,該怎麼辦?我可以將它從/ Applications和/Library/..../Versions/2.6.2中刪除,但是/ usr/local /呢?不會有一堆破碎的符號鏈接被遺忘嗎?我不想在那裏試圖挑選出2.6.2的..我不知道.. – mk12

+0

是的,你必須特別刪除(少數)2.6特定的符號鏈接,除非你'使用一個帶有「卸載」的發行版(我相信python.org的標準版本沒有) - 'ls -l/usr/local/bin |當然,grep'Python。* 2.6''很容易識別它們,所以沒有「亂七八糟」或「試圖挑選」。 –

+0

難道我也無法擺脫/ usr/local/bin中的所有內容,只需將/Python.framework/Versions/x.x.x/bin放在任何我想要的順序的路徑上? – mk12

0

我剛剛注意到/在我的Mac上遇到了這個問題。我在我的機器上安裝了Python 2.5.4,2.6.2和3.1.1,並且正在尋找一種可以隨意更換它們的方法。那是當我注意到可執行文件的所有符號鏈接時,我在'/ usr/bin'和'/ usr/local/bin'中找到了這些符號鏈接。我將所有非特定於版本的符號鏈接解壓出來,留下了python2.5,python2.6等,並編寫了一個bash shell腳本,我可以以root身份運行以更改一個符號鏈接,以便將路徑指向我選擇的版本

「/Library/Frameworks/Python.framework/Versions/Current」

有關翻錄符號鏈接出唯一不好的,就是如果一些其他的應用程序需要他們出於某種原因。我爲什麼創建這些符號鏈接的意見與Alex的評估類似,安裝人員正試圖涵蓋所有的基礎。我的所有版本都由安裝程序安裝,儘管我一直在編譯自己的版本以支持完整的64位支持,並且在編譯和安裝自己的版本時,可以選擇不創建符號鏈接或在修改期間修改PATH安裝。