Enviar pesquisa
Carregar
Pythonとパッケージングと私
•
10 gostaram
•
19,057 visualizações
Atsushi Odagiri
Seguir
pyconjp 2017 発表資料
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 41
Baixar agora
Baixar para ler offline
Recomendados
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Marp Tutorial
Marp Tutorial
Rui Watanabe
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
Recomendados
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
富士通クラウドテクノロジーズ株式会社
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
Marp Tutorial
Marp Tutorial
Rui Watanabe
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperleger Tokyo Meetup
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
Takashi Takizawa
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Masashi Shibata
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
ktateish
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
hirokiky
Pycon jp2017 20170908_ota
Pycon jp2017 20170908_ota
博三 太田
Mais conteúdo relacionado
Mais procurados
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperleger Tokyo Meetup
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
Kentaro Ebisawa
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
入門 シェル実装
入門 シェル実装
Yusuke Sangenya
暗号技術の実装と数学
暗号技術の実装と数学
MITSUNARI Shigeo
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Preferred Networks
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
Takashi Takizawa
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Masashi Shibata
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
Masahiko Sawada
TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
Takashi Hoshino
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
SECCON Beginners
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
ktateish
Mais procurados
(20)
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
20111015 勉強会 (PCIe / SR-IOV)
20111015 勉強会 (PCIe / SR-IOV)
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
入門 シェル実装
入門 シェル実装
暗号技術の実装と数学
暗号技術の実装と数学
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
PostgreSQL 15の新機能を徹底解説
PostgreSQL 15の新機能を徹底解説
TLS, HTTP/2演習
TLS, HTTP/2演習
トランザクションの並行実行制御 rev.2
トランザクションの並行実行制御 rev.2
CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
Pythonによる黒魔術入門
Pythonによる黒魔術入門
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
できる!並列・並行プログラミング
できる!並列・並行プログラミング
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
Destaque
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
hirokiky
Pycon jp2017 20170908_ota
Pycon jp2017 20170908_ota
博三 太田
Introducing wsgi_lineprof / PyCon JP 2017 LT
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
ドローンのフライトコントローラをPythonで制御してみた話
ドローンのフライトコントローラをPythonで制御してみた話
Lina Katayose
OpenAPIを利用したPythonWebアプリケーション開発
OpenAPIを利用したPythonWebアプリケーション開発
Takuro Wada
Pythonistaで始めるiOSプロトタイプ開発
Pythonistaで始めるiOSプロトタイプ開発
Yusuke Muraoka
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
Shinya Okano
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta Kitagami
Yuta Kitagami
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
Jun Okazaki
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
Pycon2017
Pycon2017
Yuta Kashino
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化
Isao Takaesu
Destaque
(14)
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
Pycon jp2017 20170908_ota
Pycon jp2017 20170908_ota
Introducing wsgi_lineprof / PyCon JP 2017 LT
Introducing wsgi_lineprof / PyCon JP 2017 LT
ドローンのフライトコントローラをPythonで制御してみた話
ドローンのフライトコントローラをPythonで制御してみた話
OpenAPIを利用したPythonWebアプリケーション開発
OpenAPIを利用したPythonWebアプリケーション開発
Pythonistaで始めるiOSプロトタイプ開発
Pythonistaで始めるiOSプロトタイプ開発
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Djangoフレームワークのユーザーモデルと認証
Djangoフレームワークのユーザーモデルと認証
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta Kitagami
Python におけるドメイン駆動設計(戦術面)の勘どころ
Python におけるドメイン駆動設計(戦術面)の勘どころ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Pycon2017
Pycon2017
Pythonと機械学習によるWebセキュリティの自動化
Pythonと機械学習によるWebセキュリティの自動化
Semelhante a Pythonとパッケージングと私
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
パッケージングの今
パッケージングの今
Atsushi Odagiri
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe
Products.PloneOrg
Products.PloneOrg
Takanori Suzuki
PyPI入門2018
PyPI入門2018
Yukino Ikegami
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe
勉強会 Cvml python基礎
勉強会 Cvml python基礎
真哉 杉野
Git pyfes201207-presen
Git pyfes201207-presen
Kouhei Maeda
Fabric
Fabric
Joe_noh
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
NipponAlgorithm
qmake入門
qmake入門
hermit4 Ishida
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
Jubatus: Jubakitでもっと楽をしよう
Jubatus: Jubakitでもっと楽をしよう
Tetsuya Shioda
Jubakitの解説
Jubakitの解説
JubatusOfficial
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
Semelhante a Pythonとパッケージングと私
(18)
みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
パッケージングの今
パッケージングの今
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
Products.PloneOrg
Products.PloneOrg
PyPI入門2018
PyPI入門2018
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
勉強会 Cvml python基礎
勉強会 Cvml python基礎
Git pyfes201207-presen
Git pyfes201207-presen
Fabric
Fabric
Pylons ユーザのための Pyramid 移行ガイド
Pylons ユーザのための Pyramid 移行ガイド
FastAPIのテンプレートプロジェクトがいい感じだった話
FastAPIのテンプレートプロジェクトがいい感じだった話
qmake入門
qmake入門
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
Jubatus: Jubakitでもっと楽をしよう
Jubatus: Jubakitでもっと楽をしよう
Jubakitの解説
Jubakitの解説
ひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
今最もアツイdistribution Gentoo Linuxについて
今最もアツイdistribution Gentoo Linuxについて
Mais de Atsushi Odagiri
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
Python3 移行への軌跡
Python3 移行への軌跡
Atsushi Odagiri
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
Sqlalchemy sqlの錬金術
Sqlalchemy sqlの錬金術
Atsushi Odagiri
Clack meetup #1 lt
Clack meetup #1 lt
Atsushi Odagiri
Pyramid入門
Pyramid入門
Atsushi Odagiri
パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri
Bplt11 form alchemy
Bplt11 form alchemy
Atsushi Odagiri
Python3でwebアプリ
Python3でwebアプリ
Atsushi Odagiri
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
Atsushi Odagiri
What makes pyramid unique
What makes pyramid unique
Atsushi Odagiri
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
Atsushi Odagiri
World plonedaylt
World plonedaylt
Atsushi Odagiri
Setup.pysetup.cfg
Setup.pysetup.cfg
Atsushi Odagiri
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri
Mais de Atsushi Odagiri
(20)
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Python3 移行への軌跡
Python3 移行への軌跡
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Sqlalchemy sqlの錬金術
Sqlalchemy sqlの錬金術
Clack meetup #1 lt
Clack meetup #1 lt
Pyramid入門
Pyramid入門
パッケージングの今と未来
パッケージングの今と未来
パッケージングの今と未来
パッケージングの今と未来
Bplt11 form alchemy
Bplt11 form alchemy
Python3でwebアプリ
Python3でwebアプリ
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
What makes pyramid unique
What makes pyramid unique
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
World plonedaylt
World plonedaylt
Setup.pysetup.cfg
Setup.pysetup.cfg
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Pythonとパッケージングと私
1.
Preface setup.cfg pyproject.toml
conclusion Pythonとパッケージングと私 Atsushi Odagiri 2017-09-08
2.
Preface setup.cfg pyproject.toml
conclusion お前誰よ • Atsushi Odagiri • Open Collector, Inc. • Repoze/Pylons/Pyramid
3.
Preface setup.cfg pyproject.toml
conclusion パッケージングの基本 • pypi パッケージリポジトリ • pip インストーラー • setuptools/wheel パッケージャー • virtualenv 仮想環境
4.
Preface setup.cfg pyproject.toml
conclusion pypi • pypi.python.org - 現在 • pypi.org - 次バージョン • 徐々に pypi.org ドメインに機能移動
5.
Preface setup.cfg pyproject.toml
conclusion pip • sdist や wheel をリポジトリからダウンロードしてイン ストールなど • インストールされてるパッケージの状況を取得など • pip 9.0.1
6.
Preface setup.cfg pyproject.toml
conclusion setuptools/wheel • setup.py から wheel を作る • setuptools 36.4.0 • wheel 0.29.0
7.
Preface setup.cfg pyproject.toml
conclusion virtualenv • ライブラリのインストール先をプロジェクトごとに 分離 • virtualenv 15.1.0 • pip 9.0.1 • setuptools 28.0.0
8.
Preface setup.cfg pyproject.toml
conclusion pipとvertualenvの使い方 $ virtualenv venv $ . venv/bin/activate (venv)$ pip install -U pip setuptools wheel (venv)$ cat > requirements.txt pyramid ˆD (venv)$ pip install -r requirements.txt (venv)$ pip list –format=columns Package Version ————– ——- Pyramid 1.9
9.
Preface setup.cfg pyproject.toml
conclusion wheelhouseにバンドル (venv)$ pip freeze > constraints.txt (venv)$ mkdir wheelhouse (venv)$ pip wheel -r requirements.txt -c constraints.txt -w wheelhouse -f wheelhouse (venv)$ deactivate $ virtualenv venv2 $ . venv2/bin/activate (venv2)$ pip install -r requirements.txt -c constraints.txt –no-index -f wheelhouse
10.
Preface setup.cfg pyproject.toml
conclusion パッケージを作るには? • setuptools を使う • setup.py を書く • setup.py で bdist_wheel コマンドを実行する • setup.py upload か twine で pypi にアップロードする (事前にアカウント作成必要)
11.
Preface setup.cfg pyproject.toml
conclusion setup.py from setuptools import setup, find_packages import sample setup( name="sample-package", version=sample.version, author="Atsushi Odagiri", author_email="aodagx@gmail.com", description="sample package to use setup.py", long_description=""" """, url="https://aodag.jp/sample-package", license="MIT", packages=find_packages(), )
12.
Preface setup.cfg pyproject.toml
conclusion setup.pyのだめなとこ • 設定と実行コードが混在 • long_description を外部ファイルに書くことが多い • ファイル指定などは提供されてない • みんなそれぞれ setup.py の中でファイルを読み込む処 理を書いてる • パッケージのメタデータとして扱われる項目と setuptools が利用する項目が分かれてない
13.
Preface setup.cfg pyproject.toml
conclusion setup.cfg にパッケージメタデータを書こう • setuptools 30.3.0 から setup.cfg にメタデータを書ける ようになった • metadata セクションと options セクション に書く • ほぼ setup 関数の引数のまま
14.
Preface setup.cfg pyproject.toml
conclusion setup.cfg にメタデータを書いた場合の setup.py from setuptools import setup setup() シンプル!
15.
Preface setup.cfg pyproject.toml
conclusion metadataセクションの主な項目 • name • version • author • author_email • description • long_description • url • lisence • classifiers
16.
Preface setup.cfg pyproject.toml
conclusion 実際のsetup.cfg(metadataセクション) [metadata] name = sample-package version = attr:sample.version author = Atsushi Odagiri author_email = aodagx@gmail.com description = sample package to use setup.cfg long_description = file:README.rst url = https://aodag.jp/sample-package license = MIT
17.
Preface setup.cfg pyproject.toml
conclusion 特殊な項目 • version • 直接書いてもいいが attr: でオブジェクトの内容を利用 できる • callable な場合は評価された結果がバージョンになる • 実行されてしまうので import するだけで副作用が起き るコードは要注意 • long_description • 直接書いてもいいが file: で指定したファイルの内容を 利用できる • 今のところ 1 ファイルしか指定できない
18.
Preface setup.cfg pyproject.toml
conclusion optionsセクションの主な項目 • packages • install_requires • entry_points
19.
Preface setup.cfg pyproject.toml
conclusion options.* なセクション • options.extras_require • options.packages.find
20.
Preface setup.cfg pyproject.toml
conclusion 実際のsetup.cfg(optionsセクション) [options] install_requires = pyramid sqlalchemy jinja2 packages = find: entry_points = file:entry_points.cfg
21.
Preface setup.cfg pyproject.toml
conclusion 実際のsetup.cfg(options.* セクション) [options.extras_require] testing = pytest mysql = pymysql postgres = psycopg2 [options.packages.find] exclude = tests examples
22.
Preface setup.cfg pyproject.toml
conclusion options の特殊な項目 • packages • 自分で全部羅列してもよい • find_packages 相当のことをする場合、 find: とだけ指 定して options.packages でオプション指定する • entry_points • 別途 entry_points を記述したファイルを指定するか options.entry_points セクションで指定する
23.
Preface setup.cfg pyproject.toml
conclusion entry_pointsのファイル [console_scripts] hello = sample:hello
24.
Preface setup.cfg pyproject.toml
conclusion options.entry_points での指定方法 [options.entry_points] console_scripts = hello=sample:hello
25.
Preface setup.cfg pyproject.toml
conclusion pbrとの違い • pbr は setuptools の拡張 • openstack プロジェクトがパッケージングのために作成 した • setup.cfg にメタデータを記述する • その他 git タグによるバージョニングなど • setup.cfg の項目がちょっと違う
26.
Preface setup.cfg pyproject.toml
conclusion バージョンをgitタグから自動で設定したい setuptools_scm を使うと git タグからバージョンを生成で きる setup( name="example", setup_require=["setuptools_scm"], use_scm_version=True, )
27.
Preface setup.cfg pyproject.toml
conclusion setup.cfgでsetuptools_scmを試してみる version = attr:setuptools_scm.get_version • callable を指定すると評価結果がバージョンになる • 実行時に setuptools_scm が入ってないといけない • setuptools_scm が必要だということは setup_requires で指定できるが…
28.
Preface setup.cfg pyproject.toml
conclusion setup.cfg の setup_requires • setup.cfg に書いたのではもう遅い • setup 関数に書くしかない? setup(setup_requires=["setuptools_scm"])
29.
Preface setup.cfg pyproject.toml
conclusion setuptoolsの機能追加や拡張など • setuptools のバージョンが古いと setup.cfg の機能が使 えない • ユーザーの setuptools のバージョンは不確定 • setup_requires のタイミングは微妙 • 結局 setuptools の実装に頼っている部分があまり明確に なってない
30.
Preface setup.cfg pyproject.toml
conclusion build-system • setuptools 以外のビルドツールを指定できる • setuptools を使う場合でも必要な拡張やバージョンを指 定できる
31.
Preface setup.cfg pyproject.toml
conclusion PEP 518 • pyproject.toml でビルドツールを指定する • 存在しなければ今までの setuptools によるビルド
32.
Preface setup.cfg pyproject.toml
conclusion pyproject.toml の形式 ビルドツールに flit を使う場合の例 [build-system] requires = ["flit"] backend = "flit.buildapi"
33.
Preface setup.cfg pyproject.toml
conclusion ビルドツールの実装について • PEP516 • コマンドラインでの実装 • reject されました • PEP517 • API での実装 • 議論中
34.
Preface setup.cfg pyproject.toml
conclusion PEP517で定義されてるAPI • build_wheel • build_sdist • optional get_requires_for_build_wheel • optional prepare_metadata_for_build_wheel • optional get_requires_for_build_sdist
35.
Preface setup.cfg pyproject.toml
conclusion pipのPEP518,PEP517対応 • pyproject.tom の読み込み [PEP518] はマージされている • setup_requires の問題は解決できそう • 隔離された環境での wheel 生成 • まだツールは setuptools 固定 [PEP517 未対応]
36.
Preface setup.cfg pyproject.toml
conclusion flit: setuptools以外のパッケージングツール • flit は setuptools とは別のパッケージングツール • filit.ini でメタデータを書く • シンプル
37.
Preface setup.cfg pyproject.toml
conclusion flit を使うには $ pip install flit $ flit init $ flit wheel
38.
Preface setup.cfg pyproject.toml
conclusion flit の PEP517対応 • toml-config ブランチ • flit.buildapi
39.
Preface setup.cfg pyproject.toml
conclusion flitを使うべきか? • pip の対応ができてないと sdist としてインストールで きない • wheel だけで配布するというのなら今からでも可能 • setuptools 自体も setup.cfg への移行など進んでる • 個人的にはオルタナティブなツールは歓迎だが、使う かっていうと…
40.
Preface setup.cfg pyproject.toml
conclusion 話し足りないこと • プライベートパッケージリポジトリ • Windows での C 拡張 • pip へのコントリビュート • conda2wheel
41.
Preface setup.cfg pyproject.toml
conclusion まとめ • setuptools ちょっとだけ進化 • sdist から wheel を作る流れが PEP で定義される • setuptools 使わなくてもよい未来
Baixar agora