2013-03-15 90 views
6

我一直在努力將Python 2.7設置爲我係統上的默認Python。Python在Mac OS X Lion中被自動別名

Python 2.6附帶了我的操作系統,而且我已經安裝了2.7(來自源代碼)並且一直試圖將它作爲我的默認版本。

有一次,有人建議我嘗試一個軟件包管理器(MacPorts/Fink/Homebrew),但我認爲這可能是一個糟糕的主意。

總體問題是,在某種程度上,Python 2.6在每次啓動shell時都將自動別名作爲默認python。我已經通過了我的.profile和.bashrc,並且沒有可以替代它們的命令。

我也設置我的默認路徑首先看/Library/Frameworks/Python.framework/Versions/2.7/bin。我也嘗試了這個SO postSU post的建議無濟於事。我需要使用2.7作爲默認值,因爲我的腳本依賴於argparse等等。

而且,我的/ usr /斌/ Python是沒有別名任何東西,和/ usr/local/bin目錄是:/usr/local/bin/python -> ../../../Library/Frameworks/Python.framework/Versions/2.7/bin/python

+0

附註:您是否考慮過使用'virtualenv'?無論您想要什麼樣的Python安裝(Apple或其他),您都可以設置所需的多種虛擬環境,並且可以隨時明確選擇想要激活的那個。 – abarnert 2013-03-15 19:10:28

+0

我正在認真考慮它。 – espais 2013-03-15 19:25:47

+0

'virtualenv'真的很酷。有一個原因是它被添加到3.3的標準庫中。一旦你處於需要關注你的環境的情況下(實際上,一旦你不只是使用系統的默認Python 2.x,特別是如果你正在安裝另一個相同的2.x版本的副本你已經擁有了,你是),你可以明確而容易地做到這一點。 – abarnert 2013-03-15 19:33:29

回答

5

我一直在制定的Python 2.7奮力是默認的Python我係統。

它已經是。當你打開一個清晰的Lion框,並將python輸入到shell中時,它會運行/usr/bin/python,它是Python 2.7.2。

Python 2.6中帶着我的操作系統

獅配備了2.5,2.6,2.7,和2.3隱患。

它們安裝在/System/Library/Frameworks/Python.framework/Versions。除2.3以外的所有符號鏈接/usr/bin/python2.x,在一個乾淨的系統上,將是您的PATH上的第一個名稱,所以只需輸入python2.6將運行2.6,而python2.7將運行2.7。

還有一個特殊的包裝/usr/bin/python默認運行2.7,但您可以配置VERSIONER_PYTHON_VERSIONcom.apple.versioner.python的首選項。

我已經安裝了2.7(源代碼),並一直試圖使我的默認版本。

你是什麼意思的「默認版本」?當你在一個新的終端shell中輸入python,或者在腳本中使用#!/usr/bin/env python作爲shebang行時,你是否希望它能夠運行?

要做到這一點,最簡單的方法是將您安裝到PATH中的任何目錄安裝到比/ usr/bin更高的位置。

如果你已經安裝了「framework build」(你應該有),那麼將會有一個目錄/Library/Frameworks/Python.framework/Versions/2.7/bin,你可以放在PATH的頂部。這可以避免影響/ usr/local和/ usr的順序,這意味着您可以使用由setup.py安裝程序安裝的任何腳本,而不必將它們符號鏈接到/ usr/local/bin。

這是很重要的,因爲蘋果的Python腳本將安裝到/ usr/local/bin目錄,例如,如果你/usr/bin/easy_install-2.7 pip,你會得到/usr/local/bin/pip和/usr/local/bin/pip-2.7 . If you also install pip`您定製的Python,你不希望它出現在同一個地方;否則,無論您最後安裝的是哪個,都會取代另一個。

如果您的系統沒有安裝框架的構建,或者你已經配置了它的腳本安裝到/usr/local/bin無論如何,或者你想影響的/ usr /本地的訂單,只是把/usr/local/bin在頂部您路徑。

不知何故,Python 2.6中是越來越自動別名爲我的默認蟒每次我的殼開始

通過自動別名,你的意思是有一個bash alias?如你在輸入alias,它給你一個列表,包括python

如果是這樣,你需要解決這個問題,而不是試圖在它之上堆疊另一個黑客來撤銷它所具有的任何效果。

如果~/.*中沒有別名命令,請查看/etc/。如果你使用grep -r alias /etc,它會給你一個很大的列表,你必須跳過郵件別名和apache別名(可能有一些權限被拒絕輸出到stderr),但是在那之後,應該沒有shell別名。

而且,我的/ usr /斌/ Python是沒有別名任何東西,

這讓我想你混淆混淆和符號鏈接。他們不是一回事。哪一個是問題?在修復之前,你必須知道什麼是錯誤的。

所以,試試這個:

which python 

它應該是/Library/Frameworks/Python.framework/Versions/2.7/bin/python如果您的路徑是你說的是。如果沒有,你沒有設置你的PATH權利,所以echo $PATH,看看。

如果那,那麼ls -l /Library/Frameworks/Python.framework/Versions/2.7/bin/python。它應該是python2.7./python2.7的符號鏈接,而不是其他目錄中的任何內容。如果沒有,你的安裝被破壞,最好的辦法是卸載Python並正確重新安裝。或只是不要重新安裝它,並使用蘋果的。或者,如果您確實需要2.7.3而不是2.7.2,或者您需要構建獨立的py2app捆綁包(特別是如果您需要它們與舊OS X兼容),或者您對sudo過敏,全局文件是世界可寫的,或者出於其他原因,你不能使用Apple的,從python.org或Homebrew安裝,而不是自己嘗試。

+0

實際上,您在/ etc中查找別名的註釋工作...有一個/ etc/profile自動添加了2.6別名。一旦被刪除,一切都開始回落......謝謝! – espais 2013-03-15 19:41:55

+3

你可能想知道別名來自哪裏,因爲......發生在你背後的是一件非常奇怪的事情,如果你安裝了某個安裝程序或者做了某些事情,它可能會完成所有其他不好的事情...... – abarnert 2013-03-15 19:43:06