Pythonライブラリの作成に関する公式情報
935 views
Post
Python is a programming language that lets you work quickly and integrate systems more effectively.
Cited from the official top page
__init__.py
とモジュール・パッケージ・名前空間の関係について、以下の記事が分かりやすかったです。単に「こう書けば動く」ではなく、概念が説明されていてありがたいです。
Pythonのライブラリを自作するときに、フォルダ構成や設定ファイルの書き方について知りたくなることがあります。ライブラリを公開するかどうかやどの程度きっちり作るかなど状況は様々だと思いますが、ソフトウェアの規模が大きいときやあちこちから呼び出す関数を整備するときなどに、ライブラリやライブラリに準じるものを作成することはよくあることだと思います。そういうときにどういう作り方が行儀の良いやり方なのかを探していて見つけた情報が以下のものです。
Python公式サイトのパッケージングに関するチュートリアル
https://packaging.python.org/ja/latest/tutorials/packaging-projects/
Pythonの公式サイトである「python.org」に置いてある文書ですので、信頼できる情報なのだと思います。
PyPAのサンプルプロジェクト
https://github.com/pypa/sampleproject
Pythonでのパッケージングに関するとりまとめを行っている組織であるPyPAが出しているサンプルですので、信頼できるのではないかと思います。
なるほど、Pythonのパッケージングに関して、公式情報に相当する情報があるのですね。勉強になります。
それから、言及されているチュートリアルとサンプルプロジェクトのどちらも設定を書くのが
setup.py
ではなくpyproject.toml
なのですね。 自分でも少し調べてみたのですが、python.orgにあるガイドには、「(パッケージングの設定には)pyproject.toml
ファイルを使うのが標準的な慣習です。」と書いてあり、Zennの記事でも「現在でも歴史的経緯から setup.py のみで設定を行っているプロジェクトは多く存在しますが、このような構成は現在では非推奨」、「setup.py
を設定ファイルの一部として用いる場合であってもpyproject.toml
は配置するのが現在の標準的なセットアップ方法」と書いてある記事を見つけました。どうやら、Pythonパッケージには
pyproject.toml
を用意すべし、pyproject.toml
を起点にしてPythonパッケージをビルドすべし、というのが公式見解のようですね。コマンドラインからsetup.py
を直接実行するやり方はlegacy、つまり、廃止予定とのことですし。pyproject.toml
の[build-system]
の指定が、サンプルプロジェクトではsetuptools
である一方、チュートリアルではデフォルト扱いがhatchling
になっていて、両者で違いがあって興味深いですね。 公式(PyPA)としては、setuptools
がまだまだ現役であることを認めつつ、今後はhatchling
を推していきたいということなのかな?