Poetryを使ってPyPIにパッケージを公開するメモ

年が変わる前に書いておこう。

12月になって、PyPI にパッケージを2つ公開した。

以前にもパッケージを公開したことはあるんだけど、PyPI で検索したら2020年10月で、「試しにやってみた」程度のものだった。このときはたぶん Poetry 使ってない。

で、今回は poetry publish コマンドで公開する手順を調べながらやったので、そのメモとして残しておく。

前提

  • PyPI (と Test PyPI)にアカウントを持っていること
  • pyproject.toml が適切に記述されていること

APIトークンの作成

Poetry を使ってパッケージを公開する前に、PyPI と Test PyPI のAPI トークンを作っておく必要がある。

PyPI にログインして、アカウント設定のページに「API トークン」というセクションがある。ここで「トークンの追加」をクリックして作る。詳細は省略。難しいことはないのでやればわかる。

ただし、作成されたトークンは一度しか表示されないので、コピペして保存しておく。

Test PyPI でも同様に作成しておく。

Poetry の設定

必要な設定は、公開先のリポジトリとその API トークンの登録だ。PyPI はデフォルトで登録されているので、Test PyPI をリポジトリとして登録する。

takatoh@apostrophe:~$ poetry config repositories.testpypi https://test.pypi.org/legacy/

Test PyPI を testpypi という名前で登録した。

つぎは先に作成しておいた API トークンを登録する。これは PyPI、Test PyPI の両方に必要。

takatoh@apostrophe:~$ pyetry config pypi-token.pypi "PyPIのAPIトークン"
takatoh@apostrophe:~$ pyetry config pypi-token.testpypi "Test PyPIのAPIトークン"

これでパッケージを公開する準備は完了

パッケージの公開

プロジェクトのルートディレクトリで、poetry publish コマンドを実行する。-r / --repository オプションでリポジトリを指定(指定しないと PyPI に公開)。

Test PyPI に公開する場合:

takatoh@apostrophe:~$ pyetry publish -r testpypi

PyPI に公開する場合:

takatoh@apostrophe:~$ pyetry publish

これで無事公開できた。

プライベートリポジトリに公開する場合

ローカルネットワークに、pypiserver を利用してプライベートなリポジトリ(http://pypilocal/)を作ってあるので、そこにも公開できるように、リポジトリ登録する。

takatoh@apostrophe:~$ poetry config repositories.pypilocal https://pypilocal/

ユーザー認証はしてないからリポジトリの登録だけすればいい。

ただ、ちょっと URL でハマった。pip でこのリポジトリからインストールするには、リポジトリの URL に “http://pypilocal/simple” を指定する。だけど、パッケージ公開用には上のように “http://pypilocal/” だけを設定する。 “simple” をつけてはいけない。Test PyPI では “legacy” がついてたので、こっちも必要なのかと思ったけど違った。

pypilocal に公開するには -r オプションで指定してやればいい。

takatoh@apostrophe:~$ pyetry publish -r pypilocal

おしまい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください