PyPI の設定 2022 年度版 要点要約2022年01月18日 12時32分14秒

PyPI は Python のライブラリ集。PyPI や Python 関連は頻繁に更新されているようで、三、四年前に書かれた記事だと、内容が古くなっていたり、リンク切れがある。

Packaging Python Projects が用意されているので、それを基本に分からない所や説明が少ないところを他で探して補うようにするのが良さそうなやり方だった。

Packaging Python Projects の注意点。

  1. このチュートリアルは、例であげている git レポジトリをそのまま PyPI として公開するように書かれている。その為、プロジェクト名にユーザ名を付け足している。このユーザ名の追加はこの例でのみ。他のサイトでは、自分のプロジェクトを始めているので、ユーザ名は付いていない。
  2. setup.cfg を用いるのが簡単で、必要十分。他の解説だとほとんど setup.py だが、cfg の方が楽。
  3. ソースコードは src 以下に置き、テストは tests に置く。一番上から使わずに、src ディレクトリを作ると、setup.cfg の使い回しが楽になる。
  4. options.entry_points の説明が足りない。

python プログラムを提供する時に options.entry_points が必要になる。チュートリアルには記述が無かった。ライブラリの公開なら影響は無い。Python でパッケージを開発して配布する標準的な方法の __main__.py と の 「options.entry_points」の cfg での書き方が役にたった。

ソースコードを src ディレクトリに置くと、setup.cfg でモジュールの指定を変更する必要がなくなり、複数のプロジェクトで共通に出来る。

[options]
package_dir =
    = src
packages = find:

[options.packages.find]
where = src
これは、パッケージに含まれるソースコードは src 以下、Python モジュールは src 以下のを勝手に見つけてと指定してある。 プロジェクトモジュール名でディレクトリを作り始めると、ここの src もモジュール名に変える必要がある。

プロジェクトの本番公開時にユーザ名を付ける必要は無い。チュートリアルにも最後の最後で書いてある。

作業の要約

  1. pyproject.toml を作成。
  2. setup.cfg を作成。
  3. python -m venv venv; source ./venv/bin/activate.csh; pip install build twine で環境準備。
  4. python -m build でビルド。
  5. https://test.pypi.org/account/register/ に登録。
  6. python -m twine upload --repository testpypi dist/* でアップロード。
  7. python -m pip install --index-url https://test.pypi.org/simpleプロジェクトでインストール。