缓存pip安装的远程存储库

Mar*_*tin 6 python git caching pip

在我的pi需求文件中,我需要各种repos的特定提交,即:

git+http://github.com/frankban/django-endless-pagination.git@725bde91db#egg=django-endless-pagination
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它显然需要pip来为每次安装重新克隆repo,完全忽略默认的下载缓存.

有没有办法要求在本地缓存此repo?或者,或者,最好的解决方案是打包并保持包在本地可用?

Mar*_*ers 5

您可以做两件事:使用可编辑的 install,或将安装结果缓存为轮子。

使用-eswitch 会导致pip将存储库克隆到srcvirtualenv的子目录中;然后,您可以在每次要重新安装时重复使用该副本:

pip install -e -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

皮普然后就重新使用现有的源每次重新运行命令(git的更新,而不是在回购的全新副本拉)的时间,或者因为安装使用实际的工作目录,你可以只使用git pullsrc/django-endless-pagination反而。

您可以将 pip install的结果缓存为Python Wheel

pip wheel --wheel-dir=/tmp/wheelhouse -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

这将安装所有要求并为每个/tmp/wheelhouse. 然后,您可以重新使用操舵室进​​行后续安装:

pip install --use-wheel --no-index --find-links=/tmp/wheelhouse -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

但是,不会从存储库更新轮子。

  • -e 实际上走错了方向,它不仅每次都会克隆存储库,而且还会重建/重新安装包:( (3认同)