あなた自身の単純なリポジトリをホストする#

あなた自身の単純なリポジトリ [1] をホストしたいのであれば、 devpi のようなソフトウェアパッケージを使うこともできますし、単に web サーバ上に適切なディレクトリを作成して静的ファイルを提供し自動でインデックスを生成させることも可能です。

どちらの場合でも、ユーザとしての既定のリポジトリではない場所をあなたのリポジトリにしようとしているのでしょうから、あなたのプロジェクトの説明にインストーラを適切に設定するように指図しておくべきでしょう。例えば pip なら:

python3 -m pip install --extra-index-url https://python.example.com/ foobar
py -m pip install --extra-index-url https://python.example.com/ foobar

加えて、あなたのリポジトリを公開する場合はHTTPSで公開することが強く推奨されます。この時、ユーザがあなたのパッケージをインストールする際のセキュリティは、すべてのリポジトリが適切なHTTPS設定であるか否かに依存します。

"手動"リポジトリ#

ディレクトリ構造は極めて単純で、ルートディレクトリ内に各プロジェクトを納めたディレクトリを作成する必要があります。このディレクトリは、プロジェクトの 標準化された名前 になっているべきです。各プロジェクトのディレクトリには、それぞれダウンロード可能なファイルを置くだけです。"Foo" というプロジェクト (のバージョン 1.0 と 2.0) と "bar" というプロジェクト (のバージョン 0.1) があるなら、ディレクトリ構造はこんなふうになるでしょう:

.
├── bar
│   └── bar-0.1.tar.gz
└── foo
    ├── Foo-1.0.tar.gz
    └── Foo-2.0.tar.gz

この配置ができあがったら、あとはルートディレクトリを自動インデックス付きでウェブサーバから提供するように設定するだけです。 Twisted の組み込みウェブサーバを使う例では、単に twisted -n web --path. を走らせておいて、ユーザに対してこのURLをインストーラの設定に加えるように指示するだけです。

既存のプロジェクト#

プロジェクト

パッケージアップロード

PyPI フォールスルー [2]

補遺

devpi

同期、複製、フェールオーバ、ミラーリングが可能な複数のインデックス

simpleindex

pypiserver

pypiprivate

PyPI クラウド

メンテナンスされていない; またプロクシでキャッシュ; 認証、認可

pywharf

メンテナンスされていない; GitHub内のファイルを提供する

Pulp-python

また、ミラーリング、プロクシ利用; Pulp 用のプラグイン

pip2pi

また、ミラーリング; 手動の同期

dumb-pypi

サーバではなくて、静的ファイルのサイトのジェネレータ

http.server

標準ライブラリ

Apache

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