- Adopted 3 PEPs; PEP 517: build system specification format PEP 621: Standardized pyproject.toml format PEP 660: pyproject.toml based editable installs 4 / 35
for 3 types of Pythonistas: Library / Framework Developer (Complex Project) Application Developer (Many People Project) Single or Few Files Scripts Developer (Small Project)
of this Talk 2. List of Packaging tools to compare in this Talk 3. Self-Introduction 2. Pros / Cons for each tool 1. Pipenv, Poetry, PDM, pip-tools, Hatch, pip (with venv) 3. What is the best tool? (for Library / Application / Scripting Developers) 4. Appendix: Rye
2018/06 2018.6.25 MIT Poetry Sébastien Eustace 2018/03 0.2.0 MIT PDM Frost Ming 2020/01 0.0.1 MIT pip-tools Vincent Driessen 2017/04 1.8.2 BSD 3-Clause Hatch Ofek Lev 2021/12 Hatch v1rc2 MIT pip PyPA 2008/12 (First GitHub commit) MIT
23 Years Old, 5+ Years of Python Ex Work: TOPGATE, Inc. (2022/12 ~) Vice-Chair of PyCon APAC 2023 Likes: Listening to Music / Cameras / Audios / Drinking 9 / 35
621 style pyproject.toml dependency Combine-able with pip or hatch Maintained by the Jazzband community pipe-tools: Cons not Included Task-runner, wheel builder and package publisher 20 / 35
actively by PyPA, nearly official Works with pyproject.toml spec, PEP 621 style Hatch: Cons Not included dependency updater Not supporting lock-file 22 / 35
pyproject.toml spec, PEP 621 style pip: Cons Without wraps virtualenv Not supporting file-managed dependency Not included task-runner and wheel builder 24 / 35
and flexible Reasons Almost what you need is included ex: Task-runner, wheel builder and publisher Maintained actively by PyPA Works with pyproject.toml spec, PEP 621 style 26 / 35
Application Developer: PDM All-in-one tool and easy to use Automation / Scripting Developer: pip Simply to use, Non-dependency (built-in in Python) 29 / 35
for source trees PEP 621 – Storing project metadata in pyproject.toml PEP 660 – Editable installs for pyproject.toml based builds (wheel based) Official Doc for the setuptools by PyPA python-poetry/poetry: Use the [project] section in pyproject.toml according to PEP-621 #3332 python-poetry/poetry: Add support for pyproject.toml files when adding --editable projects … #7670 My Blog article (in Japanese): Isn’t venv + pip good for Python package management? in 2023/1 Are you using the -c/–constraint option of pip install?