Package

Pythonパッケージ #

Pythonにはpipというパッケージ管理ツールがあります。ここではpipでインストールできるPythonパッケージの作り方を説明します。

ツールのインストール #

パッケージをビルドするのに使用するツールをpipでインストールします。インストールするのはsetuptoolsbuildです。

pip install --upgrade setuptools build

ファイル構成 #

ここではmypkgというパッケージを例として作ります。

ファイル構成は下のようにしておきます。

mypkgの下にPythonのプログラムを配置しています。Python以外のファイルをパッケージに入れ込む例として、ここではJavaScriptファイルを置いています。

pyproject.tomlがパッケージを作るための設定ファイルです。

mypkg
├── mypkg
│   ├── __init__.py
│   ├── js
│   │   └── additional.js
│   └── main.py
└── pyproject.toml

pyproject.toml #

[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "mypkg"
version = "0.0.1"

[tool.setuptools.package-data]
"*" = ["*.js"]

[tool.setuptools.package-data]の設定がないと、jsファイルがパッケージに含まれません。

ビルド #

buildを実行します。

python -m build

distディレクトリにパッケージが作成されています。

dist
├── mypkg-0.0.1-py3-none-any.whl
└── mypkg-0.0.1.tar.gz

作成された.whlファイルはpipコマンドでインストールできます。

pip install dist/mypkg-0.0.1-py3-none-any.whl

データファイルへのアクセス #

パッケージに加えたファイルにはimportlib.resources.filesを使いアクセスできます。 これはpathlibのPathの一部機能が使えるものになっています。機能が足りない場合は、as_fileを使うとPathとして得られます。

from importlib.resources import files, as_file

data_text = files("mypkg.js").joinpath("additional.js")
print(data_text.read_text())

with as_file(data_text) as f:
    print(f.read_text())