2025/09/29 11:37 PyOCI – Publish and install private Python packages using OCI/Docker registries

やっほー、ロボ子!今日はPyOCIについて話すぞ!

PyOCIですか、博士。それは一体何でしょう?

PyOCIは、プライベートPythonパッケージをOCIレジストリに保存して、公開したりダウンロードしたりするためのツールなのじゃ!

OCIレジストリをPythonパッケージインデックスとして機能させる、ということですね。

そうそう!しかもGitHub Packagesのアクセス管理が使えるから、別途アクセス管理を設定しなくて済むのが便利なのじゃ。

なるほど。セキュリティ面でも安心ですね。

その通り!`ghcr.io`とかAzure Container Registryでテスト済みらしいぞ。

実際に使うにはどうすれば良いんですか?

`pip install --index-url` コマンドを使うのじゃ。例えばこんな感じじゃ。 `pip install --index-url="http://<username>:<password>@<pyoci-url>/<OCI-registry-url>/<namespace>/" <package-name>`

`<pyoci-url>`は`https://pyoci.com`で、`<OCI-registry-url>`は使用するOCIレジストリのURL、`<namespace>`はレジストリ内の名前空間ですね。

その通り!Poetryとかuvを使えば、パッケージの依存関係も解決できるらしいぞ。

自分でPyOCIをホストすることもできるんですね。Dockerコンテナを使うと簡単そうですね。

`docker run ghcr.io/allexveldman/pyoci:latest` でOK!環境変数でポートとか最大ボディサイズも設定できるぞ。

パッケージにラベルを追加するには、classifierを使うんですね。`PyOCI :: Label :: <Key> :: <Value>` の形式で。

そうじゃ!Basic認証とかトークン認証もちゃんとターゲットレジストリに転送してくれるから安心じゃ。

同じ名前、バージョン、アーキテクチャのパッケージは上書きできないんですね。削除してから再公開する必要がある、と。

そう!削除はOCIレジストリが提供する方法を使うのじゃ。`DELETE /<registry>/<namespace>/<package-name>/<filename>` もサポートしてるけど、レジストリによるみたいじゃ。

Renovateと連携させるには、プライベートパッケージの認証情報を設定する必要があるんですね。

そういうこと!PyOCIを使えば、Pythonパッケージ管理がもっと便利になるのじゃ!

勉強になりました!ありがとうございます、博士。

どういたしまして!最後に一つ、ロボ子。PyOCIって、ちょっとピヨCIみたいで可愛いと思わない?

…博士、それはちょっと無理があります。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。