0
0

パッケージ化用pyproject.tomlボイラープレート

Last updated at Posted at 2024-09-01

プロジェクトのパッケージ化

自分のプロジェクトをパッケージ(厳密にはライブラリ)として扱わない場合、プロジェクト内のモジュール間でのimportが通常のようにできなく、マニュアルでsys.pathをいじる必要があります。これはものすごく不便です。ので、poetry・pipを使ったプロジェクトのパッケージ化方法をまとめます。

基本方針

基本手順はpoetry・pipに変わらず同じ。(PEP 621のおかげっぽい)

  1. パッケージ化する際に、プロジェクトの設定(どのフォルダーをパッケージとしたいのか、パッケージ化際どのツールを使うかなど)を記述する必要がある。これにはpyproject.tomlファイルを使う
  2. パッケージ化するコマンドを使う

想定ディレクトリ構造

.
└── project/
    ├── src/
    │   └── package_name/
    │       └── # python files
    └── pyproject.toml

pip + setuptools

pyproject.toml

[project]
name = "package_name"
version = "0.1.0"

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

command

上を記述した後に以下のコマンドを打つことで、自動的にパッケージ化してくれます。

pip install -e .

注意

  • eはeditableの略です。editableでないと、プロジェクト内のコードを変更をした際に毎回buildしないといけなくなります。ので、デベロップ段階ではeditableでインストールします

参考

poetry

pyproject.toml

[tool.poetry]
name = "package_name"
version = "0.1.0"
description = ""
authors = ["yourname <your_name@gmail.com>"]
packages = [{ include = "package_name", from = "src"}]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

注意

  • name、version、description、authorsは必須です (ないとエラーが出ます)
  • poetryはデフォルトでpyproject.tomlと同じdirectory内のtool.poetry.nameがprojectのソースダイレクトり (=パッケージ化の対象)であることを想定している。そのため、src内にプロジェクトがある場合、tool.poetry.packagesにマニュアルでプロジェクトフォルダーを指定する必要があります

command

上を記述した後に以下のコマンドを打つことで、自動的にパッケージ化してくれます。

poetry install

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0