Submit Search
Pythonとパッケージングと私
10 likes
•
19,158 views
Atsushi Odagiri
pyconjp 2017 発表資料
Technology
Read more
1 of 41
Download now
Downloaded 18 times
1
2
3
Most read
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
More Related Content
PDF
最適輸送入門
joisino
PDF
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
PDF
最適輸送の解き方
joisino
PDF
グラフニューラルネットワークとグラフ組合せ問題
joisino
PDF
Docker Compose 徹底解説
Masahito Zembutsu
PDF
#logstudy 01 rsyslog入門
Takashi Takizawa
PDF
DQNからRainbowまで 〜深層強化学習の最新動向〜
Jun Okumura
PPTX
【DL輪読会】マルチモーダル 基盤モデル
Deep Learning JP
最適輸送入門
joisino
最新リリース:Optuna V3の全て - 2022/12/10 Optuna Meetup #2
Preferred Networks
最適輸送の解き方
joisino
グラフニューラルネットワークとグラフ組合せ問題
joisino
Docker Compose 徹底解説
Masahito Zembutsu
#logstudy 01 rsyslog入門
Takashi Takizawa
DQNからRainbowまで 〜深層強化学習の最新動向〜
Jun Okumura
【DL輪読会】マルチモーダル 基盤モデル
Deep Learning JP
What's hot
(20)
PPTX
テストコードの DRY と DAMP
Yusuke Kagata
PDF
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
PDF
NumPyが物足りない人へのCython入門
Shiqiao Du
PDF
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
PDF
工学系大学4年生のための論文の読み方
ychtanaka
PPTX
Docker超入門
VirtualTech Japan Inc.
PDF
最適化超入門
Takami Sato
PDF
人と人の相性を考慮したシフトスケジューラ
鈴木 庸氏
PDF
BigQuery で 150万円 使ったときの話
itkr
PPTX
深層学習の数理
Taiji Suzuki
PDF
GPT解説
MasayoshiTsutsui
PPT
Glibc malloc internal
Motohiro KOSAKI
PPTX
モデル高速化百選
Yusuke Uchida
PDF
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
Deep Learning JP
PPTX
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
PPTX
CatBoost on GPU のひみつ
Takuji Tahara
PDF
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Atsushi KOMIYA
PDF
DSIRNLP#1 ランキング学習ことはじめ
sleepy_yoshi
PPTX
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
テストコードの DRY と DAMP
Yusuke Kagata
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
NumPyが物足りない人へのCython入門
Shiqiao Du
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
工学系大学4年生のための論文の読み方
ychtanaka
Docker超入門
VirtualTech Japan Inc.
最適化超入門
Takami Sato
人と人の相性を考慮したシフトスケジューラ
鈴木 庸氏
BigQuery で 150万円 使ったときの話
itkr
深層学習の数理
Taiji Suzuki
GPT解説
MasayoshiTsutsui
Glibc malloc internal
Motohiro KOSAKI
モデル高速化百選
Yusuke Uchida
【DL輪読会】Code as Policies: Language Model Programs for Embodied Control
Deep Learning JP
AVX-512(フォーマット)詳解
MITSUNARI Shigeo
CatBoost on GPU のひみつ
Takuji Tahara
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Atsushi KOMIYA
DSIRNLP#1 ランキング学習ことはじめ
sleepy_yoshi
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
Ad
Viewers also liked
(14)
PDF
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
hirokiky
PDF
Pycon jp2017 20170908_ota
博三 太田
PDF
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
PPTX
ドローンのフライトコントローラをPythonで制御してみた話
Lina Katayose
PDF
OpenAPIを利用したPythonWebアプリケーション開発
Takuro Wada
PDF
Pythonistaで始めるiOSプロトタイプ開発
Yusuke Muraoka
PDF
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
PDF
Djangoフレームワークのユーザーモデルと認証
Shinya Okano
PDF
PyCon JP 2017Yuta Kitagami
Yuta Kitagami
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
PDF
PyconJP2017 Kivyによるアプリケーション開発のすすめ
Jun Okazaki
PDF
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
PDF
Pycon2017
Yuta Kashino
PDF
Pythonと機械学習によるWebセキュリティの自動化
Isao Takaesu
プロダクト開発してわかったDjangoの深〜いパーミッション管理の話 @ PyconJP2017
hirokiky
Pycon jp2017 20170908_ota
博三 太田
Introducing wsgi_lineprof / PyCon JP 2017 LT
Yusuke Miyazaki
ドローンのフライトコントローラをPythonで制御してみた話
Lina Katayose
OpenAPIを利用したPythonWebアプリケーション開発
Takuro Wada
Pythonistaで始めるiOSプロトタイプ開発
Yusuke Muraoka
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
Djangoフレームワークのユーザーモデルと認証
Shinya Okano
PyCon JP 2017Yuta Kitagami
Yuta Kitagami
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
PyconJP2017 Kivyによるアプリケーション開発のすすめ
Jun Okazaki
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
Pycon2017
Yuta Kashino
Pythonと機械学習によるWebセキュリティの自動化
Isao Takaesu
Ad
Similar to Pythonとパッケージングと私
(17)
PDF
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
PDF
パッケージングの今
Atsushi Odagiri
PDF
書こう! 使おう! 単体テスト
ryohji ikebe
PDF
Products.PloneOrg
Takanori Suzuki
PPTX
PyPI入門2018
Yukino Ikegami
PDF
書こう! 使おう! 単体テスト
ryohji ikebe
PPTX
勉強会 Cvml python基礎
真哉 杉野
PDF
Git pyfes201207-presen
Kouhei Maeda
PDF
Fabric
Joe_noh
PDF
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
PDF
qmake入門
hermit4 Ishida
PDF
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
PDF
Jubakitの解説
JubatusOfficial
PPTX
Jubatus: Jubakitでもっと楽をしよう
Tetsuya Shioda
KEY
ひのきのぼうだけで全クリ目指す
AromaBlack
PPTX
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
PDF
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
みんなのPython勉強会#77 パッケージングしよう
Atsushi Odagiri
パッケージングの今
Atsushi Odagiri
書こう! 使おう! 単体テスト
ryohji ikebe
Products.PloneOrg
Takanori Suzuki
PyPI入門2018
Yukino Ikegami
書こう! 使おう! 単体テスト
ryohji ikebe
勉強会 Cvml python基礎
真哉 杉野
Git pyfes201207-presen
Kouhei Maeda
Fabric
Joe_noh
Pylons ユーザのための Pyramid 移行ガイド
Nozomu Kaneko
qmake入門
hermit4 Ishida
Pythonを取り巻く開発環境 #pyconjp
Yoshifumi Yamaguchi
Jubakitの解説
JubatusOfficial
Jubatus: Jubakitでもっと楽をしよう
Tetsuya Shioda
ひのきのぼうだけで全クリ目指す
AromaBlack
[4.20版] UE4におけるLoadingとGCのProfilingと最適化手法
エピック・ゲームズ・ジャパン Epic Games Japan
今最もアツイdistribution Gentoo Linuxについて
Takuto Matsuu
More from Atsushi Odagiri
(20)
PDF
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
PDF
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
PDF
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
PDF
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
PDF
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
PDF
Python3 移行への軌跡
Atsushi Odagiri
PDF
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
PDF
Sqlalchemy sqlの錬金術
Atsushi Odagiri
PPTX
Clack meetup #1 lt
Atsushi Odagiri
PDF
Pyramid入門
Atsushi Odagiri
PDF
パッケージングの今と未来
Atsushi Odagiri
PDF
パッケージングの今と未来
Atsushi Odagiri
PDF
Bplt11 form alchemy
Atsushi Odagiri
PDF
Python3でwebアプリ
Atsushi Odagiri
PDF
Pyconjp2012 memory-of-europython
Atsushi Odagiri
PDF
What makes pyramid unique
Atsushi Odagiri
PDF
エキPy lt repoze.whoの紹介
Atsushi Odagiri
PDF
World plonedaylt
Atsushi Odagiri
PDF
Setup.pysetup.cfg
Atsushi Odagiri
PDF
BPStudy#54 そろそろPython3
Atsushi Odagiri
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
Atsushi Odagiri
eggとはなんだったのか 栄光のsetuptools
Atsushi Odagiri
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri
Python3 移行への軌跡
Atsushi Odagiri
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri
Sqlalchemy sqlの錬金術
Atsushi Odagiri
Clack meetup #1 lt
Atsushi Odagiri
Pyramid入門
Atsushi Odagiri
パッケージングの今と未来
Atsushi Odagiri
パッケージングの今と未来
Atsushi Odagiri
Bplt11 form alchemy
Atsushi Odagiri
Python3でwebアプリ
Atsushi Odagiri
Pyconjp2012 memory-of-europython
Atsushi Odagiri
What makes pyramid unique
Atsushi Odagiri
エキPy lt repoze.whoの紹介
Atsushi Odagiri
World plonedaylt
Atsushi Odagiri
Setup.pysetup.cfg
Atsushi Odagiri
BPStudy#54 そろそろPython3
Atsushi Odagiri
Recently uploaded
(11)
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
20250729_Devin-for-Enterprise
Masaki Yamakawa
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
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="
[email protected]
", 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 =
[email protected]
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 使わなくてもよい未来
Download