[Python] poetryを使用したPyPIパッケージ公開手順


はじめに

poetry を使用して、PyPIにパッケージを公開するための設定手順です。

PyPIそのものと、PyPIのアカウント登録については、@shinichi-takii さんの記事をご参照ください。

準備

poetryとkeyringをインストール

もしまだインストールされていなければ、poetryとkeyringをインストールします。
keyringは、PyPIのアカウント情報を保存するために使用されます(なくても大丈夫ですが、インストールする方がおすすめです。macOSの場合、キーチェーンを使ってくれます)。

poetryのインストールについては、@canonrock16 さんの記事をご参照ください。

keyringのインストールについては、@hidelafoglia さんの記事をご参照ください。

テストレポジトリの登録

testpypiという名前で、Test PyPIのURLを登録します。

poetry config repositories.testpypi https://test.pypi.org/legacy/

TestではないほうのPyPIは、poetry自体に組み込まれているので何もしなくてよいです。

API Tokenの発行

PyPI および Test PyPI へアクセスし、API Tokenを発行します。

Add API tokenをクリックします。

任意のToken nameを入力し、Scopeを選択します。
Add tokenをクリックします。

API Tokenが発行されるのでコピーします。

API Tokenの登録

PyPIのAPI Tokenを登録します。

poetry config pypi-token.pypi "PyPIのAPI Token"

Test PyPIのAPI Tokenを登録します。

poetry config pypi-token.testpypi "Test PyPIのAPI Token"

パッケージの作成

これからパッケージを作成する場合は、poetry new パス名というコマンドを実行すると、パスで指定したディレクトリの下に、以下のようなファイルが出来上がります。

├── README.rst
├── パス名
│   └── __init__.py
├── pyproject.toml
└── tests
    ├── __init__.py
    └── test_パス名.py

pyproject.tomlファイルを開き、以下の項目を[tool.poetry]セクションに追加します(追加しなくてもよいですが、追加するほうがおすすめです)。
readmeのファイル名は、実際に合わせてください。

[tool.poetry]
description = "短い説明文"
license = "ライセンス名"
homepage = "ホームページURL"
repository = "ソースレポジトリURL"
readme = "README.md"

setup.pyファイルは、ビルド時に自動的に生成されるので、自前で用意しなくても大丈夫です。

パッケージをビルド

以下のコマンドを実行すると、distディレクトリ以下にソースtarボールとwhlファイルができます。

poetry build

パッケージをアップロード

Test PyPIへアップロードするには、登録したレポジトリ名を指定します。

poetry publish -r testpypi

TestではないほうのPyPIへアップロードする場合は、何も指定する必要はありません。

poetry publish

おわりに

poetryを使うことで、Python初心者の自分でも簡単にパッケージを作成して公開することができました。