Successfully reported this slideshow.
Your SlideShare is downloading. ×

pyconjp 2019 LT 今日のsetuptools

Advertisement

More Related Content

Advertisement

pyconjp 2019 LT 今日のsetuptools

  1. 1. 今日の setuptools pycon jp 2019 LT Atsushi Odagiri September 16, 2019
  2. 2. Outline パッケージングにまつわるエトセトラ PEP517,581 各種ツールの対応 まとめ
  3. 3. おまえだれよ aodag: Atsushi Odagiri 株式会社オープンコレクター pylonsproject.jp
  4. 4. 今日の 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
  5. 5. 今日の 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
  6. 6. PEP517,518 の意義 setuptools と pip の組み合わせで実質成り立っていたフロー の整理 他ツールとの整合性
  7. 7. これまでの sdist setup.py を持ってるもの pip が setup.py bdist_wheel を実行してできあがったも のを site-packages に展開
  8. 8. 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 に展開
  9. 9. PEP 518 – Specifying Minimum Build System Requirements for Python Projects pyproject.toml の定義 tool セクション以下を自由に使える
  10. 10. 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>"]
  11. 11. pip の対応 pip 19.0 以降で PEP517 準拠の sdist をインストール可能 pyproject.toml がなければ setuptools 由来のインストー ル方法
  12. 12. pip パッケージインストーラとしてほぼ唯一無二の存在 pipenv や poetry も裏では pip を実行する
  13. 13. setuptools の対応 pyproject.toml があれば setup.py なくてもよい setuptools.build_meta がビルドバックエンド フォールバック先なので書かなくてもこれになる 結果的に空の pyproject.toml を置くだけで setup.py 不要 になる パッケージメタデータは setup.cfg に記述する
  14. 14. setuptools なんだかんだで標準実装 名前空間パッケージや C 拡張モジュールなど setuptools じゃ ないと対応していないものも多い
  15. 15. poetry の対応 poetry.masonry.api が build-backend パッケージメタデータは pyproject.toml の tool.poetry セクション以下に記述
  16. 16. poetry 期待の新星? venv を管理したり pip をラップしていたり、単なるパッケー ジャー以上の包括的な機能
  17. 17. tox の対応 isolated_build を設定すると PEP517 のフローでテスト環 境にインストール skipsdist してる人たちには関係ない [tox] skipsdist = false isolated_build = true
  18. 18. まとめ 各種ツールが PEP517,518 対応してきた PEP517,518 が明確に定義され、新しいツールが進出するよ うに poetry, flit… でも複雑なパッケージはやっぱ setuptools じゃないとだめ 名前空間パッケージ C 拡張モジュール

×