2014-10-20 1054 views
3

使用Mac OSX 10.8.5和Python 2.7.8。 Python是使用MacPorts安裝的,我已經驗證MacPorts安裝目前是我正在使用的那個。我在將某些軟件包導入MacPorts安裝時遇到問題,特別是當其中一個安裝的軟件包與System Python使用的較舊版本衝突時。作爲一個例子,我已經驗證在我的sys.path中安裝了一個系統包,導致導入當前版本的Numpy時出現問題。從python sys.path永久刪除某些東西

python 
>>> import numpy 
>>> numpy.__version__ 
'1.6.1' #Bad Version 

python 
>>> import sys 
>>> sys.path.remove('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python') 
>>> import numpy 
>>> numpy.__version__ 
'1.9.0' #Good Version 

的問題是,「/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python」從未明確地加入到$ PYTHONPATH或$ PATH通過常規手段,所以我不知道它是如何被添加到sys.path。我想永久阻止從這個路徑導入東西。

我已經嘗試過:

我就在這裏的答案閱讀site.py What sets up sys.path with Python, and when?然而,當我試圖在這個問題解決方案,他們不工作。我嘗試手動編輯site.py並將語句sys.path = filter (lambda a: not a.startswith('/System'), sys.path)添加到main()函數。然而,即使在將聲明寫入site.py中後,仍然會出現錯誤的路徑.py

錯誤的路徑來自我的計算機操作系統使用的目錄,因此刪除/ System/Library下的numpy路徑不是一個選項。有沒有什麼辦法可以解決我的問題,保留'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python'下的文件自動添加到sys.path?

回答

1

事實證明,由damirv在What sets up sys.path with Python, and when?提出的解決方案確實有效。我在第一次嘗試中錯誤地實施了他的建議。必須找到工作python版本正確使用的site.py,並在main()函數的最後放置sys.path = filter (lambda a: not a.startswith('/System'), sys.path)。對於我的MacPorts Python安裝,該路徑是/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py。

嘗試此解決方案之前,我錯誤地將該代碼行添加到系統安裝的Python,位於/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/site.py,顯然這樣做啓動MacPorts安裝版本時無法解決導入問題。