2012-09-23 72 views
1

我正在使用10.8.1(Mountain Lion)。MacPorts和bash PATH

升級到Mountain Lion後,我的一些MacPorts停止工作。爲了更輕鬆的生活,我只是清除了/opt/local/並重新安裝了最新版本的MacPorts,隨後是端口本身。

這有一個副作用,我使用的許多端口都回到了捆綁的OS X默認值。我打開了.profile以確保/opt/local/bin在PATH中排名第一,但這並沒有解決問題。

我懷疑port select輸出是一種症狀:

$ port select python 
Available versions for python: 
    none (active) # shouldn't the bundled version be here? 
    python27 
    python32 

$ which python 
/usr/bin/python 

更改活動端口(sudo port select --set python python27)解決了這個問題,但不是所有的端口,port select工作。有人知道這裏發生了什麼嗎?

編輯:我要澄清,我不認爲這是一個完整的修復 - 你應該能夠與像sudo port select --set python python25-apple的命令,我懷疑我只得到改回蘋果版本通過解決潛在的問題回來。

對於紀錄,~/.profile內容:

export PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/texbin 
+1

'.bashrc'怎麼樣?我不記得哪一個是在OS X上首先執行的。 – slugonamission

+0

'$ open .bashrc'給出'/user/ben/.bashrc文件不存在',顯然這不是它! –

+0

你已經解決了python問題。還有哪些端口仍然不起作用?什麼'echo $ PATH'顯示在你的終端會話中?你打開了一個新的終端窗口嗎?你有'.bash_profile'文件和'.profile'嗎?如果是這樣,前者將被bash優先選擇。 –

回答

3

沒有更多的信息,這是很難猜測你所看到的行爲,你希望看到什麼。 MacPorts確實爲您提到的一些命令提供了port select選項,如pythonipython,但是does not yet for pip。在一般情況下,使用MacPorts安裝Python腳本與特定版本的後綴,所以獨立的port select選項,你會發現他們的後綴的命令,例如:

$ port select --list ipython 
Available versions for ipython: 
    ipython27 
    ipython32 (active) 
    none 
$ which ipython 
/opt/local/bin/ipython 
$ which ipython-2.7 
/opt/local/bin/ipython-2.7 
$ port select --list pip 
Warning: Unable to get active selected version: The specified group 'pip' does not exist. 
Error: The 'list' command failed: The specified group 'pip' does not exist. 
$ which pip 
$ which pip-2.7 
/opt/local/bin/pip-2.7 

順便說一句,既不pip也不ipython通過蘋果OS供應X系統Pythons,所以目前還不清楚你捆綁的OS X默認值是什麼意思。也許你將這些版本安裝到系統Python 2.7中。如果是這樣,默認情況下,你會看到他們/usr/bin/python2.7和/或安裝在/usr/local/bin/Library/Python/2.7

更新:之前的MacPorts提供了port select pip選項(如上面鏈接的MacPorts的問題要求),你應該能夠有pip通過修改.profile在頭部添加了Python框架bin目錄執行的MacPorts版本

export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/Current/bin:/opt/local/bin:... 

更新2014-04:路徑的的MacPorts現在不提供port select pip選項,所以你應該不再需要做PATH黑客。

$ sudo port select pip 
Available versions for pip: 
    none (active) 
    pip27 
    pip33 
$ sudo port select pip pip27 
Selecting 'pip27' for 'pip' succeeded. 'pip27' is now active. 
$ hash 
$ which pip 
/opt/local/bin/pip 
+0

謝謝你的幫助。您希望我提供哪些更多信息?我自己將pip和ipython安裝到了捆綁的Python上。例如,我希望能夠在默認情況下運行MacPorts版本的pip,只需輸入「$ pip」即可。 –

+0

我期待這種行爲,因爲MacPorts('/ opt/local')在PATH中首先出現。 –

+0

感謝您的更新。這解決了我遇到的大部分問題。 –