包索引镜像和缓存

页面状态

未完成

上次审核时间

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 服务器缓存对包索引的请求