Weitere ähnliche Inhalte
Ähnlich wie パッケージングを支える技術 pyconjp2016 (20)
Mehr von Atsushi Odagiri (20)
パッケージングを支える技術 pyconjp2016
- 6. 4.1 PyPA
• Python Packaging Authority
• パッケージングツールをメンテするグループ
• github.com/pypa
• bitbucket.org/pypa
- 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 でツールを導入する
- 19. 5.3 .pth
• site-packages などに配置されるファイル
• 中にファイルパスを羅列しておくと、インタプ
リタ起動時にすべて ‘sys.path‘ に追加される
• ‘./‘ 以外で始まる行があるとpythonコードとし
て実行されるという謎仕様
• easy_install が活用していた
- 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を作るために決められた
- 25. 6.4 Python の ABI
• pymalloc
• ucs-4
• python3ではすべてucs-4ビルド
- 33. 6.10 dockerを利用してパッケージを作
成する
• docker イメージが用意されている
– quay.io/reposi-
tory/pypa/manylinux1_x86_64
• CIでこのイメージを利用してパッケージング
する
– werckerやgitlabでは直接dockerイメージを
利用できる
– travisなどでもCIのワークフロー中にdocker
イメージを利用できる
- 40. 7.4 PEP 518 – Specifying Minimum
Build System Requirements for
Python Projects
• パッケージング方法やそれに必要なツールを支
持する
• pypi上でwheel作成する目的?
• パッケージングに必要なツールを記述
• pyproject.toml
• TOMLフォーマット
- 42. 7.6 PEP 516 – Build system abstraction
for pip/conda etc
• ビルドツールの指定や依存性を記述する
• 指定のツールでどのようにビルドするのかも
指定
• pypi.jsonというファイルで話が進んでいるっ
ぽい
• でも多分pyproject.tomの tool セクションが同
じものを指しているはず
- 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
- 52. 11.1 PEP 503 – Simple Repository API
• pypiもこの形式
• 登録やアップロード方法は決められてない
• ‘httplib.server‘ などでも実現可能
- 57. 12.3 インストール一覧
• PEP 376 – Database of Installed Python
Distributions
• パッケージによってインストールされたファイ
ルの情報
• どのモジュールがどのパッケージでインストー
ルされたか
• インストール時のファイルのハッシュ
• distlib.database