2009-02-09 72 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下载文件。

不幸的是,在这种情况下轮盘格式不被支持(据我所知)。