Espelhos e caches de índice de pacotes#

Status da página:

Incompleta

Última revisão:

2023-11-08

O espelhamento ou cache do PyPI (e outros índices de pacotes) pode ser usado para acelerar a instalação do pacote local, permitir o trabalho offline, lidar com firewalls corporativos ou simplesmente falhas na Internet.

Existem várias classes de opções nesta área:

  1. fazer cache local/hospedado de índices de pacotes.

  2. fazer espelhamento local/hospedado de um índice de pacotes. Um espelho é uma cópia (total ou parcial) de um índice de pacotes, que pode ser usado no lugar do índice original.

  3. índice de pacotes privados com alternativa para os índices de pacotes públicos (por exemplo, para mitigar ataques de confusão de dependência), também conhecido como proxy.

Fazendo cache com pip#

pip fornece uma série de facilidades para acelerar a instalação usando cópias locais em cache de pacotes:

  1. Instalações rápidas e locais baixando todos os requisitos para um projeto e apontando pip para esses arquivos baixados em vez de ir para PyPI.

  2. Uma variação da acima, que pré-constrói os arquivos de instalação para os requisitos usando python3 -m pip wheel:

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

Projetos existentes#

Projeto

Cache

Espelho

Proxy

Notas adicionais

devpi

múltiplos índices com herança; sincronização, replicação, tolerância a falhas; envio de pacote

bandersnatch

simpleindex

plugin personalizado permite fazer cache; redirecionamento para outros índices de pacotes

PyPI Cloud

sem manutenção; autenticação, autorização

Pulp-python

plugin para Pulp; vários índices proxy; envio de pacote

proxpi

múltiplos índices sob proxy

nginx_pypi_cache

múltiplos índices sob proxy

Flask-Pypi-Proxy

sem manutenção

Apache

usando mod_rewrite e `mod_cache_disk <https://httpd.apache.org/docs/current/mod/mod_cache_disk.html> `_, você pode armazenar em cache as solicitações para índices de pacotes por meio de um servidor Apache