包索引镜像和缓存#

页面状态:

不完整

上次审阅:

2023-11-08

镜像或缓存 PyPI(和其他 包索引)可用于加速本地包安装、允许离线工作、处理公司防火墙或仅仅是普通的互联网不稳定。

此领域有多个选项类别

  1. 包索引的本地/托管缓存。

  2. 包索引的本地/托管镜像。镜像是包索引的(全部或部分)副本,可用于代替原始索引。

  3. 具有到公共包索引的故障转移的私有包索引(例如,减轻依赖关系混淆攻击),也称为代理。

使用 pip 缓存#

pip 提供了许多设施,通过使用 的本地缓存副本来加速安装

  1. 快速且本地安装通过下载项目的所有要求,然后将 pip 指向那些下载的文件,而不是访问 PyPI。

  2. 上述内容的一个变体,使用 python3 -m pip wheel 预构建要求的安装文件

    python3 -m pip wheel --wheel-dir=/tmp/wheelhouse SomeProject
    python3 -m pip install --no-index --find-links=/tmp/wheelhouse SomeProject
    

现有项目#

项目

缓存

镜像

代理

其他说明

devpi

具有继承性的多个索引;同步、复制、故障转移;包上传

bandersnatch

simpleindex

自定义插件启用缓存;重新路由到其他包索引

PyPI Cloud

未维护;身份验证、授权

Pulp-python

Pulp 的插件;多个代理索引;包上传

proxpi

多个代理索引

nginx_pypi_cache

多个代理索引

Flask-Pypi-Proxy

未维护

Apache

使用 mod_rewritemod_cache_disk,你可以通过 Apache 服务器缓存对包索引的请求