パッケージインデックスのミラーとキャッシュ#

ページステイタス:

未完了

最終査読日:

2023年11月8日

PyPI (あるいは他の パッケージインデックス) のミラーやキャッシュがあると、手元でパッケージをインストールするのが速くなったり、オフラインでインストールできたり、会社のファイアウォール経由でもできたり、あるいは、単純にインターネットがあてにならなくてもインストールできたりします。

この領域のオプションには複数のクラスがあります:

  1. パッケージインデックスのローカルまたはホストされたキャッシュ。

  2. パッケージインデックスのローカルまたはホストされたミラーリング。ミラーとは、パッケージインデックスの (全体または一部の) コピーで、オリジナルのインデックスの代わりに使うことができます。

  3. (例えば依存関係を混乱させる攻撃を緩和するための) 公開のパッケージインデックスへフォールスルーする機能を持ったプライベートなパッケージインデックスで、プロクシーとも呼ばれる。

pipによるキャッシュ#

pip は、 パッケージ のローカルキャッシュを使って素早くインストールするためのいくつもの機能を提供します。

  1. あるプロジェクトの依存先パッケージをすべてダウンロードし、 pip を PyPI の代わりにそれらダウンロード済みファイルに向けることによる 速くてローカルなインストール

  2. python -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 クラウド

保守されていない; 認証・認可

Pulp-python

Pulp 用のプラグイン; 複数のプロクシされたインデックス; パッケージアップロード

proxpi

複数のプロクシされたインデックス群

nginx_pypi_cache

複数のプロクシされたインデックス群

Flask-Pypi-Proxy

保守されていない

Apache

mod_rewrite および mod_cache_disk を用いて、Apache サーバ経由のパッケージインデックスへのリクエストをキャッシュすることができます