今日の setuptools
pycon jp 2019 LT
Atsushi Odagiri
September 16, 2019
Outline
パッケージングにまつわるエトセトラ
PEP517,581
各種ツールの対応
まとめ
おまえだれよ
aodag: Atsushi Odagiri
株式会社オープンコレクター
pylonsproject.jp
今日の setuptools
2018.9.21 40.4.2
2017.9.15 36.5.0
2016.9.20 27.3.0
2015.9.19 18.3.2
2014.9.27 6.0
今日の setuptools
2019.8.21 41.2.0
2018.9.21 40.4.2
2017.9.15 36.5.0
2016.9.20 27.3.0
2015.9.19 18.3.2
2014.9.27 6.0
PEP517,518 の意義
setuptools と pip の組み合わせで実質成り立っていたフロー
の整理
他ツールとの整合性
これまでの sdist
setup.py を持ってるもの
pip が setup.py bdist_wheel を実行してできあがったも
のを site-packages に展開
PEP 517 – A build-system independent format for source
trees
インストーラ (pip など)sdist を wheel に変換するためのフ
ロー
pyproject.toml の build-system セクションの設定に基づ
いて wheel をビルド
build-system.requires のツールをインストール
build-system.backend の API を実行
ビルドした wheel を site-packages に展開
PEP 518 – Specifying Minimum Build System
Requirements for Python Projects
pyproject.toml の定義
tool セクション以下を自由に使える
pyproject.toml の例
[build-system]
requires = ["poetry >= 0.12, <1"]
build-backend = "poetry.masonry.api"
[tool.poetry]
name = "package_toml_poetry"
version = "0.1.0"
description = ""
authors = ["Name <email@email.com>"]
pip の対応
pip 19.0 以降で PEP517 準拠の sdist をインストール可能
pyproject.toml がなければ setuptools 由来のインストー
ル方法
pip
パッケージインストーラとしてほぼ唯一無二の存在
pipenv や poetry も裏では pip を実行する
setuptools の対応
pyproject.toml があれば setup.py なくてもよい
setuptools.build_meta がビルドバックエンド
フォールバック先なので書かなくてもこれになる
結果的に空の pyproject.toml を置くだけで setup.py 不要
になる
パッケージメタデータは setup.cfg に記述する
setuptools
なんだかんだで標準実装
名前空間パッケージや C 拡張モジュールなど setuptools じゃ
ないと対応していないものも多い
poetry の対応
poetry.masonry.api が build-backend
パッケージメタデータは pyproject.toml の tool.poetry
セクション以下に記述
poetry
期待の新星?
venv を管理したり pip をラップしていたり、単なるパッケー
ジャー以上の包括的な機能
tox の対応
isolated_build を設定すると PEP517 のフローでテスト環
境にインストール
skipsdist してる人たちには関係ない
[tox]
skipsdist = false
isolated_build = true
まとめ
各種ツールが PEP517,518 対応してきた
PEP517,518 が明確に定義され、新しいツールが進出するよ
うに
poetry, flit…
でも複雑なパッケージはやっぱ setuptools じゃないとだめ
名前空間パッケージ
C 拡張モジュール

More Related Content

PDF
Slide rhino+gh 03
PDF
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
PDF
みんなのPython勉強会#77 パッケージングしよう
PDF
パッケージングを支える技術 pyconjp2016
PDF
Pythonとパッケージングと私
PDF
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PDF
パッケージングの今
PDF
async/await の向こう側 PyCon Kyushu 2022
Slide rhino+gh 03
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
みんなのPython勉強会#77 パッケージングしよう
パッケージングを支える技術 pyconjp2016
Pythonとパッケージングと私
PYTHON PACKAGING (PyFes 2012.03 発表資料)
パッケージングの今
async/await の向こう側 PyCon Kyushu 2022

More from Atsushi Odagiri (20)

PDF
eggとはなんだったのか 栄光のsetuptools
PDF
Pythonでの開発を効率的に進めるためのツール設定
PDF
Python3 移行への軌跡
PDF
Sqlalchemy sqlの錬金術
PPTX
Clack meetup #1 lt
PDF
Pyramid入門
PDF
パッケージングの今と未来
PDF
パッケージングの今と未来
PDF
Bplt11 form alchemy
PDF
Python3でwebアプリ
PDF
Pyconjp2012 memory-of-europython
PDF
What makes pyramid unique
PDF
エキPy lt repoze.whoの紹介
PDF
World plonedaylt
PDF
Setup.pysetup.cfg
PDF
BPStudy#54 そろそろPython3
PDF
Form libraries
PDF
フレームワークなしでWSGIプログラミング
PDF
Form libraries
PDF
Aodag scaffold
eggとはなんだったのか 栄光のsetuptools
Pythonでの開発を効率的に進めるためのツール設定
Python3 移行への軌跡
Sqlalchemy sqlの錬金術
Clack meetup #1 lt
Pyramid入門
パッケージングの今と未来
パッケージングの今と未来
Bplt11 form alchemy
Python3でwebアプリ
Pyconjp2012 memory-of-europython
What makes pyramid unique
エキPy lt repoze.whoの紹介
World plonedaylt
Setup.pysetup.cfg
BPStudy#54 そろそろPython3
Form libraries
フレームワークなしでWSGIプログラミング
Form libraries
Aodag scaffold
Ad

pyconjp 2019 LT 今日のsetuptools