2014-05-24 33 views
2

直到今天,我一直在使用macports版本python27並通過macports安裝python軟件包。今天,我需要一些通過macports無法使用的軟件包;我瞭解了點子,並在那裏找到了它們。然而,在通過pip安裝這些軟件包之後,我意識到pip和macports都不會看到其他軟件安裝的東西。因此,爲了保持一致性,我決定卸載所有macports軟件包,通過macports安裝python27py27-pip,然後繼續通過pip安裝我的所有python軟件包。Macports不識別pip安裝的軟件包

這很好,但由於macports不知道我的pip安裝的python軟件包,所以在安裝依賴於python的其他軟件時(例如,inkscape),我遇到了麻煩:macports試圖安裝它自己的版本, py27-numpy(已經由pip安裝),然後安裝失敗,因爲它「已經存在並且不屬於註冊的端口」。

是否有一致的方式來使用pip並讓macport識別出可能需要其他東西的python包已經安裝了?

回答

2

解決方案是:不要使用Macports安裝Python的包。

Macports是一個通用的包管理器,它在其數據庫中註冊已安裝的包。

Pip是Python的包管理器,因此如果您想要安裝Python包,請使用適當的包管理工具。 Pip沒有自己的數據庫來保存有關安裝的東西的證據 - 它只是檢查Python的路徑,以查看包是否在那裏(而這正是你想要的)。

無論如何,無論如何你會使用Virtualenv,你也需要點子來安裝軟件包,所以最好在任何地方使用它。

+0

感謝您的回覆。我沒有打算使用macports來安裝python的包,但它需要python來安裝其他東西(例如,inkscape)。有沒有辦法告訴它,PIP已經安裝了諸如numpy之類的東西,並讓它使用它們? –

+0

是否有理由需要安裝自己的numpy版本而不是使用MacPorts版本?你應該堅持這樣或那樣:(1)使用MacPorts端口安裝你需要的所有軟件包,並且如果沒有端口,就回退到通過pip手動安裝(或者更好的是請求創建或更新端口);或者(2)通過'pip'手動管理所有軟件包。你可以在任何一種場景中使用'virtualenv'。 –

+0

我希望能使用選項(2),因爲pip看起來更全面,我想要一個單獨的管理器。但是,macports安裝的許多其他程序依賴於python,所以它總是會嘗試安裝它自己的版本。 –

相關問題