はじめてpythonパッケージを作成した

はじめに

勉強のために、いまさらながらPythonパッケージを作成しました。

gitHubで管理して、pip installできることまで確認します。

環境:VSCode/python3/windows/GitHub

Pythonパッケージを作成

GitHubでリポジトリを作成します。以下の構成でファイルを作成します。

pyprj_work/pyproject.toml
pyprj_work/src/pyprj_work/__init__.py
pyprj_work/src/pyprj_work/sample.py

pyproject.tomlは、Pythonプロジェクトのビルド方法や依存関係などを統一的に定義する設定ファイルです。

setup.pyでもよいみたいですが、最近はpyproject.tomlが使われているようです。

以下のように記述しました。

pyproject.toml
[build-system]
requires = ["setuptools>=61.0", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "pyprj_work"
dynamic = ["version"]
description = "Python work library"
authors = [{ name="username", email="example@example.com" }]
readme = "README.md"
license = { text = "MIT" }
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
]
dependencies = []

[tool.setuptools_scm]
version_scheme = "guess-next-dev"
local_scheme = "node-and-date"

setuptools-scmを使用すると、GitHubでタグ付けしたバージョンがpip listや、<package>.__version__で確認できるバージョンに自動で紐づくようです。

setuptoolsだと、pyproject.tomlは

[project]
version = "0.0.0"

のように、直値を与える必要があります。バージョン更新する度にpyproject.tomlを編集するのが面倒なため、setuptools-scmを選択しました。

__init__.py
from importlib.metadata import version
__version__ = version("pyprj_work")

上記の記述で、pyproject.tomlに記載のバージョンを吸い出します。pyproject.tomlのバージョンはGitHubのタグから生成されるため、タグ付けで、__init__.pyのバージョンまで自動で更新されます。

sample.py
print("Success!")

別な環境でpip installしたときに、動作確認できるように適当なprint文を記述します。

ここまで終わったら、GithubにPushしてタグ付けを行います。

ちなみに、タグ付けする際はv0.0.1や、0.0.1のようなフォーマットでないと自動でバージョンを引っ張れないです。

動作確認

動作確認をするため、別なフォルダを作成します。

そこで、pip install git+<リポジトリのURL>を実行します。

pip install git+<リポジトリのURL>

成功すると、pip listで作成したパッケージが表示されます。

pip list
Package    Version
---------- -------
pyprj_work 0.0.1

インタプリタでimportします。

>>> from pyprj_work import sample
Success

おわりに

今回はじめてPythonパッケージを作成しました。これまで簡易スクリプト程度しか使用しておらず、体系的なことは何もしならいことを痛感しました。

こんな時代ですが、一から勉強してみようかな。

コメント

タイトルとURLをコピーしました