7 TestPyPIの設定
NoteTL;DR
- PyPI : 本番の公式リポジトリ
- TestPyPI : 本番に影響しないテスト用リポジトリ
TestPyPIとは?
TestPyPI とは,PyPI へ正式公開する前のpublicなsandbox環境です.主な用途としては
- パッケージのビルド手順が正しく動くか確認
pyproject.tomlのメタデータが正しく反映されるかをチェックpip installで正常にインストールできるかの事前テスト
Warning
- TestPyPIはPyPIとは別のデータベースで運用されているので,TestPyPI専用のユーザアカウントを作成が必要
- TestPyPI 用のデータベースは定期的に刈り込まれるので,ユーザアカウントが削除されることがあり
- TestPyPIはprivate repositoryとしての運用は出来ません
- アップロードしたパッケージは全世界から閲覧・インストール可能
- PrivateなPyPIを使いたい場合は,Dockerを用いて
pypiserver/pypiserverを構築するなどの対応が必要
TestPyPIへのpublish
TestPyPIにパッケージを公開(publish)する基本的な手順は,リポジトリURLをTestPyPIに変える以外は以下のようにPyPIとほぼ同じです.
- パッケージを準備
- パッケージをビルド
- TestPyPI にアップロード
- TestPyPI からインストールして動作確認
TestPyPIにアップロードするためにはユーザー登録とAPI Tokenの発行が必要となります.
TestPyPI Token設定
TestPyPI API Token 発行手順
- Test PyPI へログイン
- メニューから Account settings へ移動
- ページ下部の API tokens セクションへ移動
- Add API token をクリックし,トークン設定を入力 & トークンの発行
- 「Token name」と「Scope」を使い方に合わせて選択する

NoteTest PyPI API Tokenの種類
| 種類 | 説明 | メリット | デメリット |
|---|---|---|---|
| Entire account | 全プロジェクトで利用可能なトークン | - どのプロジェクトにも upload 可能 - 開発初期の試験に便利 |
漏洩した時の影響範囲が大きい |
| Specific project | 指定した1つのプロジェクトのみで使用可能 | - セキュリティ的に安全 - 本番運用に近い形で試験できる |
プロジェクトごとにトークン発行が必要 |
パッケージをTestPyPIへPublish
ここでは UV, Poetry それぞれを用いたTest PyPI へのpublishを解説します.前提として,手元にpublish対象のプロジェクトは存在するとします. uv versionに対応したプロジェクト例はこちらになります.
共通の流れ
Python Packageの publish の流れは,基本的にはツールに依らず以下の 3 ステップです:
- プロジェクトをビルドする(
sdist/wheelの生成) - TestPyPI 用のトークンをセット
- パッケージを TestPyPI へ upload
uv version
uv version 0.9.11 での解説をします.
% uv --version
uv 0.9.11Poetry version
TestPyPIからインストール
poetry source add testpypi https://test.pypi.org/simple/ --priority=supplemental