有没有办法配置easy_install以避免在安装失败时再次下载文件?
答案 0 :(得分: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
答案 1 :(得分:13)
这是我的解决方案,使用pip,管理二进制包的安装,并在Linux和Windows上都可用。根据要求,它将限制从PyPi下载到最小值,并且作为额外的奖励,在Linux上,它允许加速重复安装包,通常需要编译到几分之一秒。
安装程序只需几步,但我觉得值得做。
创建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
目录 - 自动进行 cache
dir每次都会获得从pypi下载的数据的缓存版本,pip尝试从pypi获取一些包。很容易得到它(不需要特别小心),但请注意,从点的角度来看,这些只是从PyPi下载的兑现数据,而不是包,所以万一你使用选项--no-index
,它不行。
pip install --download
填充packages
dir packages
目录是放置真实包文件的地方。例如。对于我最喜欢的包plac
,我会这样做:
$ pip install --download~ / .pip / packages plac
并且plac包文件将出现在该目录中。您甚至可以使用-r requirements.txt
文件一次为多个包执行此操作。
这些包甚至用于$ pip install --no-index <something>
。
E.g。 lxml
包需要补充,下载和编译可能需要45秒到几分钟。使用滚轮格式,您可以在这里节省很多。
安装wheel
工具,如果您还没有:
$ pip install wheel
为lxml
创建轮子(假设您已经设法在过去安装lxml
- 它需要安装系统中的一些库):
$ pip wheel lxml
这会过度下载,编译,但最终导致lxml whl
文件位于packgages
目录。
此后
$ pip install lxml
甚至更快
$ pip install --no-index lxml
将花费一秒钟,因为它使用轮式格式化包。
(注意:这甚至可以在Linux机器上准备,没有编译,只有一些从exe文件重新打包到whl
。)
从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
将其转换为whl
$ wheel convert 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
测试一下:
$ pip install lxml
或
$ pip install --no-index lxml
应该很快。
请注意,wheel convert
可以对鸡蛋格式化的包进行完全相同的转换。
easy_install
和setup.py install
重复使用packages
目录 easy_install
和$ python setup.py install
似乎不提供下载缓存,但允许使用我们packages
目录中的软件包。
为此,请编辑这两个工具的配置文件:
在Linux上:$HOME/.pydistutils.cfg
在Windows上:%HOME%\pydistutils.cfg
就我而言,我在/home/javl/.pydistutils.cfg
:
[easy_install]
find_links = /home/javl/.pip/packages
当pip尝试安装软件包,声明依赖于其他软件包时,此配置甚至可能有助于pip install
个调用。当它将此任务委托给setup.py
调用时,如果没有.pydistutils.cfg
配置,它将从PyPi下载文件。
不幸的是,在这种情况下不支持滚轮格式(据我所知)。