2009-02-09 124 views

回答

16

pip(http://pypi.python.org/pypi/pip/)是easy_install工具的替代品,可以做到這一點。

只需運行easy_install pip並將環境變量PIP_DOWNLOAD_CACHE設置爲您希望pip存儲文件的路徑。 請注意,緩存不適用於從源代碼庫(如svn/git/hg/bzr)簽出的依賴項。

然後使用pip install代替easy_install

+7

需要注意的一點是`pip不能安裝二進制文件(_。egg files_)`。這在Windows平臺上至關重要。 – 2011-05-10 09:09:11

13

下面是使用PIP我的解決方案,甚至管理二進制安裝包,並使用兩個,Linux和Windows。並且根據要求,它將限制從PyPi下載到最低版本,並且作爲額外的獎勵,在Linux上,它允許加速重複安裝通常需要編譯幾分之一秒的包。

安裝需要幾個步驟,但我的事情,這是值得做的。

PIP創建配置文件

PIP創建配置文件(在Linux上:〜/將該.pip/pip.conf,在Windows%HOME%\ PIP \ pip.ini)

我的人有此內容:

[global] 
download-cache = /home/javl/.pip/cache 
find-links = /home/javl/.pip/packages 

[install] 
use-wheel = yes 

[wheel] 
wheel-dir = /home/javl/.pip/packages 

填充cache DIR - 自動進入

cache目錄將得到緩存的版本從PyPI將每次下載的數據,p的ip嘗試從pypi獲取一些包。它很容易得到它(不需要特別小心),但請注意,從點的角度來看,這些只是從PyPi下載的兌現數據,而不是包,所以如果您使用選項--no-index,它將無法工作。

pip install --download填充packages DIR

packages dir是地方把真正的包文件。例如。我最喜歡的包plac,我會做:

$點子安裝 - 表格下載〜/將該.pip /包PLAC

和PLAC包文件將在該目錄appeare。您甚至可以使用-r requirements.txt文件一次對多個包執行此操作。

這些包甚至使用$ pip install --no-index <something>

防止在Linux上重複編譯相同的程序包

例如, lxml包需要編譯,下載和編譯可能需要45秒到幾分鐘。使用車輪格式,你可以在這裏省下很多。

安裝wheel工具,如果你沒有它尚未:

$ pip install wheel 

lxml(假設造輪子,你已成功安裝在過去lxml - 它需要系統中的某些庫要安裝):

$ pip wheel lxml 

這越過下載,編譯,但最終導致LXML whl文件中packgages目錄之中。

此後

$ pip install lxml 

或甚至更快

$ pip install --no-index lxml 

將採取秒的小數部分,因爲它使用車輪格式化包。

從窗口設置EXE包準備輪包

(注:這甚至可以在Linux機器準備,沒有編譯,只有一些分裝從exe文件到whl。)

  1. 下載軟件包一封來自PyPI的EXE格式,如:

    $ wget的https://pypi.python.org/packages/2.7/l/lxml/lxml-3.2.3.win32-py2.7.exe#md5=14ab978b7f0a3382719b65a1ca938d33 $ DIR LXML-3.2.3.win32-py2.7.exe

  2. 將其轉換爲whl

    $輪轉換LXML-3.2.3.win32-py2.7.exe $ DIR LXML-3.2.3.win32-py2.7.exe LXML-3.2。 3-cp27-NONE-win32.whl

  3. 測試:

    $ PIP安裝LXML

$ pip install --no-index lxml 

應該很快。

請注意,wheel convert可以對卵形格式的包進行完全相同的轉換。

easy_installsetup.py install重用你packages目錄

easy_install$ python setup.py install似乎並沒有提供下載緩存,但允許使用我們的包在我們packages目錄。

要爲這兩個工具做到這一點,編輯配置文件:

在Linux上:$HOME/.pydistutils.cfg

在Windows上:%HOME%\pydistutils.cfg

在我來說,我在這裏:

[easy_install] 
find_links = /home/javl/.pip/packages 

這個配置甚至可以幫助pip install調用的一些情況,當點試圖在拖延一個包,聲明依賴於其他的。由於它將此任務委託給setup.py調用,但沒有.pydistutils.cfg配置,它將從PyPi下載文件。

不幸的是,在這種情況下輪盤格式不被支持(據我所知)。