Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Atsushi Odagiri
4,457 views
パッケージングを支える技術 pyconjp2016
pycon jp 2016 発表資料
Software
◦
Read more
5
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 58
2
/ 58
3
/ 58
4
/ 58
5
/ 58
6
/ 58
7
/ 58
8
/ 58
9
/ 58
10
/ 58
11
/ 58
12
/ 58
13
/ 58
14
/ 58
15
/ 58
16
/ 58
17
/ 58
18
/ 58
19
/ 58
20
/ 58
21
/ 58
22
/ 58
23
/ 58
24
/ 58
25
/ 58
26
/ 58
27
/ 58
28
/ 58
29
/ 58
30
/ 58
31
/ 58
32
/ 58
33
/ 58
34
/ 58
35
/ 58
36
/ 58
37
/ 58
38
/ 58
39
/ 58
40
/ 58
41
/ 58
42
/ 58
43
/ 58
44
/ 58
45
/ 58
46
/ 58
47
/ 58
48
/ 58
49
/ 58
50
/ 58
51
/ 58
52
/ 58
53
/ 58
54
/ 58
55
/ 58
56
/ 58
57
/ 58
58
/ 58
More Related Content
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PPTX
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
PPTX
Jenkinsとamazon ecsで コンテナCI
by
shigeyuki azuchi
PDF
20191009 AWS Black Belt Online Seminar Amazon GameLift
by
Amazon Web Services Japan
PDF
[AKIBA.AWS] VGWのルーティング仕様
by
Shuji Kikuchi
PDF
Harbor RegistryのReplication機能
by
Masanori Nara
PDF
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
by
Kohei Tokunaga
PDF
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
by
Amazon Web Services Japan
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
NGINXをBFF (Backend for Frontend)として利用した話
by
Hitachi, Ltd. OSS Solution Center.
Jenkinsとamazon ecsで コンテナCI
by
shigeyuki azuchi
20191009 AWS Black Belt Online Seminar Amazon GameLift
by
Amazon Web Services Japan
[AKIBA.AWS] VGWのルーティング仕様
by
Shuji Kikuchi
Harbor RegistryのReplication機能
by
Masanori Nara
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
by
Kohei Tokunaga
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
by
Amazon Web Services Japan
What's hot
PDF
AWS Black Belt Online Seminar 2017 Amazon Kinesis
by
Amazon Web Services Japan
PPTX
20211109 bleaの使い方(基本編)
by
Amazon Web Services Japan
PDF
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
by
Amazon Web Services Japan
PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
by
Amazon Web Services Japan
PPTX
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
by
Amazon Web Services Japan
PDF
クラウドTCOの真実
by
SORACOM, INC
PDF
3分でわかるAzureでのService Principal
by
Toru Makabe
PDF
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
by
Amazon Web Services Japan
PDF
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
by
Amazon Web Services Japan
PDF
Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)
by
NTT DATA Technology & Innovation
PPTX
Azure仮想マシンと仮想ネットワーク
by
Kuninobu SaSaki
PDF
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
PDF
AWS BlackBelt AWS上でのDDoS対策
by
Amazon Web Services Japan
PDF
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
by
Keisuke Takahashi
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
PPTX
急速に進化を続けるCNIプラグイン Antrea
by
Motonori Shindo
PDF
Keycloakの最近のトピック
by
Hitachi, Ltd. OSS Solution Center.
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
AWS Black Belt Online Seminar 2017 Amazon Kinesis
by
Amazon Web Services Japan
20211109 bleaの使い方(基本編)
by
Amazon Web Services Japan
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
by
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
by
Amazon Web Services Japan
KeycloakでAPI認可に入門する
by
Hitachi, Ltd. OSS Solution Center.
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
by
Amazon Web Services Japan
クラウドTCOの真実
by
SORACOM, INC
3分でわかるAzureでのService Principal
by
Toru Makabe
製造装置データ収集の選択肢 (AWS IoT Deep Dive #5)
by
Amazon Web Services Japan
Gaming on aws 〜ゲームにおけるAWS最新活用術〜
by
Amazon Web Services Japan
Pod Security AdmissionによるKubernetesのポリシー制御(Kubernetes Novice Tokyo #21 発表資料)
by
NTT DATA Technology & Innovation
Azure仮想マシンと仮想ネットワーク
by
Kuninobu SaSaki
初心者向けインターネットの仕組みと8/25の障害についての説明
by
Ken SASAKI
AWS BlackBelt AWS上でのDDoS対策
by
Amazon Web Services Japan
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
by
Keisuke Takahashi
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
急速に進化を続けるCNIプラグイン Antrea
by
Motonori Shindo
Keycloakの最近のトピック
by
Hitachi, Ltd. OSS Solution Center.
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
Viewers also liked
PDF
パッケージングの今と未来
by
Atsushi Odagiri
PDF
Python3 移行への軌跡
by
Atsushi Odagiri
PPTX
データ分析スクリプトのツール化入門 - PyConJP 2016
by
Akinori Kohno
PDF
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
PDF
パッケージングの今
by
Atsushi Odagiri
PDF
Sqlalchemy sqlの錬金術
by
Atsushi Odagiri
PDF
セールスエンジニアとして今後身につけていきたい技術
by
a know
PDF
Import community pycon jp
by
FATEC São José dos Campos
PPTX
自分のチームをどう作る?
by
Masakatsu Sugii
PDF
Python入門 コードリーディング - PyConJP2016
by
Shinya Okano
PPTX
PyCon JP 2016 Talk#024 ja
by
drillan
PDF
ビックデータとPythonではじめる野球の統計分析 #pyconjp
by
Shinichi Nakagawa
PDF
あなたのScalaを爆速にする7つの方法
by
x1 ichi
PDF
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
PDF
続Pythonによるwebスクレイピング入門
by
Hironori Sekine
PDF
Pythonではじめるロケーションデータ解析
by
Hiroaki Sengoku
PDF
はてなブックマーク in Scala
by
Lintaro Ina
PDF
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
by
Lintaro Ina
PDF
Kubernetesを触ってみた
by
Kazuto Kusama
PDF
PythonによるWebスクレイピング入門
by
Hironori Sekine
パッケージングの今と未来
by
Atsushi Odagiri
Python3 移行への軌跡
by
Atsushi Odagiri
データ分析スクリプトのツール化入門 - PyConJP 2016
by
Akinori Kohno
CTF超入門 (for 第12回セキュリティさくら)
by
kikuchan98
パッケージングの今
by
Atsushi Odagiri
Sqlalchemy sqlの錬金術
by
Atsushi Odagiri
セールスエンジニアとして今後身につけていきたい技術
by
a know
Import community pycon jp
by
FATEC São José dos Campos
自分のチームをどう作る?
by
Masakatsu Sugii
Python入門 コードリーディング - PyConJP2016
by
Shinya Okano
PyCon JP 2016 Talk#024 ja
by
drillan
ビックデータとPythonではじめる野球の統計分析 #pyconjp
by
Shinichi Nakagawa
あなたのScalaを爆速にする7つの方法
by
x1 ichi
あなたのScalaを爆速にする7つの方法(日本語版)
by
x1 ichi
続Pythonによるwebスクレイピング入門
by
Hironori Sekine
Pythonではじめるロケーションデータ解析
by
Hiroaki Sengoku
はてなブックマーク in Scala
by
Lintaro Ina
はてなブックマークにおけるアクセス制御 - 半環構造に基づくモデル化
by
Lintaro Ina
Kubernetesを触ってみた
by
Kazuto Kusama
PythonによるWebスクレイピング入門
by
Hironori Sekine
Similar to パッケージングを支える技術 pyconjp2016
PDF
PYTHON PACKAGING (PyFes 2012.03 発表資料)
by
Takayuki Shimizukawa
PDF
Python パッケージの影響を歴史から理解してみよう!
by
Kir Chou
PDF
みんなのPython勉強会#77 パッケージングしよう
by
Atsushi Odagiri
PDF
パッケージングの今と未来
by
Atsushi Odagiri
PDF
とあるWeb企業でのDebianシステムの使い方。
by
Kouhei Maeda
PDF
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
PDF
Distutil setuptools distribute
by
Atsushi Odagiri
PDF
pyconjp 2019 LT 今日のsetuptools
by
Atsushi Odagiri
PPT
Python開発環境三種の神器
by
Yukitaka Uchikoshi
PDF
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
by
Atsushi Odagiri
PDF
20121119.dodai projectの紹介
by
Osamu Habuka
PPTX
Pipenvのご紹介 v2
by
C Y
PDF
今最もアツイdistribution Gentoo Linuxについて
by
Takuto Matsuu
PDF
about dodai project in OSC 2012.Cloud
by
Osamu Habuka
PDF
環境構築自動化ツールのご紹介
by
Etsuji Nakai
PDF
Python virenv
by
Satoshi Ohki
PDF
Personal Cloud Automation
by
Etsuji Nakai
PDF
Debian Multiarch Support
by
Keisuke Nakao
PDF
Dodai projectの紹介
by
Osamu Habuka
PDF
Pyconjp2014_implementations
by
masahitojp
PYTHON PACKAGING (PyFes 2012.03 発表資料)
by
Takayuki Shimizukawa
Python パッケージの影響を歴史から理解してみよう!
by
Kir Chou
みんなのPython勉強会#77 パッケージングしよう
by
Atsushi Odagiri
パッケージングの今と未来
by
Atsushi Odagiri
とあるWeb企業でのDebianシステムの使い方。
by
Kouhei Maeda
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
Distutil setuptools distribute
by
Atsushi Odagiri
pyconjp 2019 LT 今日のsetuptools
by
Atsushi Odagiri
Python開発環境三種の神器
by
Yukitaka Uchikoshi
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
by
Atsushi Odagiri
20121119.dodai projectの紹介
by
Osamu Habuka
Pipenvのご紹介 v2
by
C Y
今最もアツイdistribution Gentoo Linuxについて
by
Takuto Matsuu
about dodai project in OSC 2012.Cloud
by
Osamu Habuka
環境構築自動化ツールのご紹介
by
Etsuji Nakai
Python virenv
by
Satoshi Ohki
Personal Cloud Automation
by
Etsuji Nakai
Debian Multiarch Support
by
Keisuke Nakao
Dodai projectの紹介
by
Osamu Habuka
Pyconjp2014_implementations
by
masahitojp
More from Atsushi Odagiri
PDF
async/await の向こう側 PyCon Kyushu 2022
by
Atsushi Odagiri
PDF
eggとはなんだったのか 栄光のsetuptools
by
Atsushi Odagiri
PDF
Pythonでの開発を効率的に進めるためのツール設定
by
Atsushi Odagiri
PDF
Pythonとパッケージングと私
by
Atsushi Odagiri
PPTX
Clack meetup #1 lt
by
Atsushi Odagiri
PDF
Pyramid入門
by
Atsushi Odagiri
PDF
Bplt11 form alchemy
by
Atsushi Odagiri
PDF
Python3でwebアプリ
by
Atsushi Odagiri
PDF
Pyconjp2012 memory-of-europython
by
Atsushi Odagiri
PDF
What makes pyramid unique
by
Atsushi Odagiri
PDF
エキPy lt repoze.whoの紹介
by
Atsushi Odagiri
PDF
World plonedaylt
by
Atsushi Odagiri
PDF
Setup.pysetup.cfg
by
Atsushi Odagiri
PDF
BPStudy#54 そろそろPython3
by
Atsushi Odagiri
PDF
Form libraries
by
Atsushi Odagiri
PDF
フレームワークなしでWSGIプログラミング
by
Atsushi Odagiri
PDF
Form libraries
by
Atsushi Odagiri
PDF
Aodag scaffold
by
Atsushi Odagiri
PDF
Nose 鼻をきかせてテストせよ
by
Atsushi Odagiri
PDF
Json rpc 2_0
by
Atsushi Odagiri
async/await の向こう側 PyCon Kyushu 2022
by
Atsushi Odagiri
eggとはなんだったのか 栄光のsetuptools
by
Atsushi Odagiri
Pythonでの開発を効率的に進めるためのツール設定
by
Atsushi Odagiri
Pythonとパッケージングと私
by
Atsushi Odagiri
Clack meetup #1 lt
by
Atsushi Odagiri
Pyramid入門
by
Atsushi Odagiri
Bplt11 form alchemy
by
Atsushi Odagiri
Python3でwebアプリ
by
Atsushi Odagiri
Pyconjp2012 memory-of-europython
by
Atsushi Odagiri
What makes pyramid unique
by
Atsushi Odagiri
エキPy lt repoze.whoの紹介
by
Atsushi Odagiri
World plonedaylt
by
Atsushi Odagiri
Setup.pysetup.cfg
by
Atsushi Odagiri
BPStudy#54 そろそろPython3
by
Atsushi Odagiri
Form libraries
by
Atsushi Odagiri
フレームワークなしでWSGIプログラミング
by
Atsushi Odagiri
Form libraries
by
Atsushi Odagiri
Aodag scaffold
by
Atsushi Odagiri
Nose 鼻をきかせてテストせよ
by
Atsushi Odagiri
Json rpc 2_0
by
Atsushi Odagiri
パッケージングを支える技術 pyconjp2016
1.
2016年9月21日 パッケージングを支える技術 PyCon JP 2016 Atsushi
Odagiri
2.
1 お前だれよ • 小田切篤 •
Beproud, Inc.
3.
2 これまでのお話 • 2013
パッケージングの今と未来 • 2014 パッケージングの今 • 2015 Packaging最前線
4.
3 アジェンダ • パッケージングを支えるツール •
ソースパッケージ • バイナリパッケージ • パッケージングを支える技術に支えられてみ よう
5.
4 パッケージングを支える ツール • PyPA
ってなに?
6.
4.1 PyPA • Python
Packaging Authority • パッケージングツールをメンテするグループ • github.com/pypa • bitbucket.org/pypa
7.
4.2 PyPAの基本ツール • setuptools •
virtualenv • pip • wheel
8.
4.3 setuptools • 配布物を作成する •
setup.pyで使われる • easy_install使うのはもうやめましょう • distributeも、いい加減忘れてください • egg? あれは幻です
9.
4.4 今日のsetuptools • 27.2.0 •
去年(2016/9/6)18.3
10.
4.5 virtualenv • python環境を仮想化する •
プロジェクトごとに使うライブラリを隔離 • python3.3以降では同等の機能がpython本体か ら提供されている(pyvenv)
11.
4.6 pip • インストーラ •
sdistとwheelを取り扱える • requirements.txt でライブラリを構成管理する
12.
4.7 wheel • wheel形式パッケージを作成するツール •
setuptools に bdist_wheel サブコマンドを追 加する
13.
4.8 ツールの導入方法 • python3.4以降ではpip,setuptoolsを導入する ensurepipが入っているのでpythonインストー ル後にpipを利用可能 •
virtualenvは環境作成時にpip,setuptools,wheel を導入する • pyvenvはバージョンによって作成後のツール 導入が異なる – 3.3 なし – 3.4以降 ensurepipでpip,setuptoolsが導入さ れる
14.
• どの環境でもget-pip.py で pip,setuptools,wheelを最新にできる
15.
4.9 例えばubuntuのpyvenv • 14.04
の python3.4 は ensurepipが消されてい るため、–without-pipをつけないとエラーに なる • 16.04 の python3.5はensurepipが pkg_resources-0.0.0という謎のパッケージメ タデータを作成する – そのままpip freezeしたrequirements.txtを 作ると他の環境でエラーになる • 回避策は –without-pip で環境を作ってから get-pip.py でツールを導入する
16.
5 python標準の仕組み • pypaツールはどのようにパッケージをインス トールしてpythonインタプリタに認識させる のか?
17.
5.1 PYTHONPATHとsys.path • 環境変数PYTHON_PATHで複数のディレク トリを指定できる •
指定した内容は ‘sys.path‘ に入る • モジュールやパッケージを ‘import‘ するとき は ‘sys.path‘ のディレクトリを探しに行く • よくわからないところにインストールしても sys.path に追加できればよい
18.
5.2 site-packages/user-site-packages • サードパーティ製ライブラリの標準インストー ル先 •
debianではさらに dist-packages という謎の ディレクトリが存在する • user-site-packages はユーザー権限でインス トールできる • user-site-packages にインストールするには pipで ‘–user‘ オプションを使う
19.
5.3 .pth • site-packages
などに配置されるファイル • 中にファイルパスを羅列しておくと、インタプ リタ起動時にすべて ‘sys.path‘ に追加される • ‘./‘ 以外で始まる行があるとpythonコードとし て実行されるという謎仕様 • easy_install が活用していた
20.
5.4 distutils • setup.py
で使う setup 関数の大元 • setuptoolsはdistutilsの拡張 • 直接使うことはもうないはず • 昔はこれで setup.py install などとしていた
21.
6 バイナリディストリビュー ション wheel •
wheelもう使ってるよね?
22.
6.1 PEP 427
– The Wheel Binary Package Format 1.0 • バイナリ形式の配布フォーマット • 既に利用されている • C拡張を含まない場合はpy2.py3で共通の配 布物
23.
6.2 PEP 513
– A Platform Tag for Portable Linux Built Distributions • これまではLinux向けwheelはpypiにあげられ なかった • manylinux1 • linux向けのwheelを作るために決められた
24.
6.3 Linux向けwheelパッケージのつら いところ • どのようなライブラリがあると想定してよ いか? •
依存するライブラリのABIが合わないなどのト ラブル • 依存ライブラリ同梱のためのハックがsetup.py に散らばる
25.
6.4 Python の
ABI • pymalloc • ucs-4 • python3ではすべてucs-4ビルド
26.
6.5 wheelの名前規約からわかること • numpy-1.11.2rc1- cp35-cp35m-manylinux1_x86_64.whl –
numpy という名前のパッケージ – 1.11.2rc1 というバージョン – CPython 3.5 のAPI – CPython pymallocビルドのABI – manylinux1_x86_64 プラットフォーム
27.
6.6 manylinux1が想定するLinux環境 • Centos5.11相当 •
x86とx86_64の両方 • その他前提としてよいライブラリ
28.
6.7 manylinux1でインストールを期待 してよいライブラリ(1) • libpanelw.so.5 •
libncursesw.so.5 • libgcc_s.so.1 • libstdc++.so.6 • libm.so.6 • libdl.so.2 • librt.so.1 • libcrypt.so.1 • libc.so.6
29.
• libnsl.so.1
30.
6.8 manylinux1でインストールを期待 してよいライブラリ(2) • libutil.so.1 •
libpthread.so.0 • libX11.so.6 • libXext.so.6 • libXrender.so.1 • libICE.so.6 • libSM.so.6 • libGL.so.1 • libgobject-2.0.so.0
31.
• libgthread-2.0.so.0 • libglib-2.0.so.0
32.
6.9 auditwheel • linux向けwheelをmanylinux1に変換する ツール •
manylinux1を満たしているかチェック • 依存ライブラリをwheelに同梱させる • wheelファイル名のplatform tagをmanylinux1 に変更
33.
6.10 dockerを利用してパッケージを作 成する • docker
イメージが用意されている – quay.io/reposi- tory/pypa/manylinux1_x86_64 • CIでこのイメージを利用してパッケージング する – werckerやgitlabでは直接dockerイメージを 利用できる – travisなどでもCIのワークフロー中にdocker イメージを利用できる
34.
6.11 werckerでやってみよう box: id: quay.io/pypa/manylinux1_x86_64 registry:
quay.io build: steps: - script: name: build code: | /opt/python/cp35-cp35m/bin/pytho - script:
35.
name: test code: | /opt/python/cp35-cp35m/bin/pytho -
script: name: pack code: | /opt/python/cp35-cp35m/bin/pytho - script: name: audit code: | auditwheel repair dist/*.whl -w
36.
7 ソースディストリビューショ ン sdistとはなにか? •
setuptoolsとpipの実装でなんとなく決まって いる • ‘setup.py install‘ ができればsdist?
37.
7.1 setuptoolsがなくてもwheelパッ ケージは作成できる • wheelツールはsetuptoolsと独立して作られて いる •
distlibにもwheelを作成する処理が実装されて いる
38.
7.2 sdistを考え直す意味 • setuptools依存からの脱却 •
明確なインストールフロー
39.
7.3 現状のインストール手順 • pipがsdistをダウンロードする •
pipがsdistを展開する • pipがsetup.py bdist_wheelを実行する • できあがったwheelパッケージをpipがインス トールする • setup.py install は関係なかった
40.
7.4 PEP 518
– Specifying Minimum Build System Requirements for Python Projects • パッケージング方法やそれに必要なツールを支 持する • pypi上でwheel作成する目的? • パッケージングに必要なツールを記述 • pyproject.toml • TOMLフォーマット
41.
7.5 pyproject.toml [build-system] requires =
["setuptools", "wheel"]
42.
7.6 PEP 516
– Build system abstraction for pip/conda etc • ビルドツールの指定や依存性を記述する • 指定のツールでどのようにビルドするのかも 指定 • pypi.jsonというファイルで話が進んでいるっ ぽい • でも多分pyproject.tomの tool セクションが同 じものを指しているはず
43.
8 プログラミングPythonパッ ケージ • setuptoolsに依存せずにパッケージングしてみ よう
44.
8.1 distlibでできること • wheelパッケージ作成 •
wheelパッケージインストール • メタデータ作成 • パッケージリポジトリからのダウンロード • インストール済パッケージのリストアップ
45.
8.2 bib -
reversed pip • distlibと標準ライブラリのみで実行するパッ ケージングツール • 本日作成しました
46.
8.3 distlibを使う準備 >>> import
sys >>> import os >>> sys.path.append( ... os.path.join( ... os.getcwd(), ... ’distlib-0.2.3-py3-none-any.wh >>> import distlib >>> distlib
47.
9 プロジェクトの作成 • bib.init_project
48.
9.1 パッケージメタデータ • dist-info
ディレクトリ • pydist.json/package.json
49.
10 パッケージの作成
50.
10.1 wheelパッケージを作成する • 作業ディレクトリを作成 •
パッケージ名.dist-info ディレクトリを作成 • dist-info ディレクトリ以下に pydist.json をコ ピー • インストール対象を作業ディレクトリにコピー • distlib.wheelでWheelを作成する
51.
11 パッケージの配布 • 作成したパッケージを公開してインストール可 能にする •
simple package repository形式のサイトで公開 する • ダウンロードしてインストールする
52.
11.1 PEP 503
– Simple Repository API • pypiもこの形式 • 登録やアップロード方法は決められてない • ‘httplib.server‘ などでも実現可能
53.
11.2 wheelファイルをsimple package repository形式に配置する •
distlib.wheelでメタデータを取得 • パッケージ名でディレクトリを作成 • wheelファイルをコピー • そのディレクトリを対象に ‘httplib.server‘ を 立ち上げる
54.
12 インストール • パッケージをリポジトリからダウンロード •
パッケージのメタデータを読み取る • Wheelで読み取って、対象ディレクトリにイン ストール
55.
12.1 パッケージをリポジトリからダウ ンロードする • distlib.locators •
SimpleScrapingLocator • result.download_urls でURLを取得 • 一時ディレクトリに保存
56.
12.2 wheelパッケージをインストール する • distlib.scripts
ScriptMakerを作成 • distlib.wheelの install メソッドでインストール
57.
12.3 インストール一覧 • PEP
376 – Database of Installed Python Distributions • パッケージによってインストールされたファイ ルの情報 • どのモジュールがどのパッケージでインストー ルされたか • インストール時のファイルのハッシュ • distlib.database
58.
13 まとめ • setuptoolsやpipがなくてもパッケージングは できる •
いろんなツールがエコシステムに参加できるよ うにsdistの定義が検討されている • wheelはがんがん使いましょう
Download