eggとはなんだったのか 栄光のsetuptools

Atsushi Odagiri
Atsushi Odagiriopen collector
egg とはなんだったのか 栄光の setuptools
Python 2 EOL Party in Tokyo
Atsushi Odagiri
February 15, 2020
Outline
egg とはなんだったのか 栄光の setuptools
Agenda
setuptools
egg
自己紹介
aodag
Atsushi Odagiri
Open Collector, Inc.
覚えているでしょうか?
http://peak.telecommunity.com/
ez_setup.py
http:
//peak.telecommunity.com/DevCenter/setuptools
setup.py で直接使ったり
import ez_setup
ez_setup.use_setuptools()
from setuptools import setup
コマンド実行したり
$ sudo python ez_setup.py
setuptools の構成
setuptools の配布物に含まれるもの
setuptools パッケージ
pkg_resources パッケージ
easy_install コマンド
setuptools モジュール
distutils を拡張する
install や build などの既存コマンドの拡張
install コマンド実行時に依存ライブラリをインストールする
upload コマンドで cheeseshop にパッケージをアップロード
setup.py 書くのにちょっと便利な関数
find_packages とか
pkg_resources モジュール
パッケージ管理のユーティリティ
パッケージメタデータ (egg!) の処理
entry_point などの取得
パッケージ以下のファイルリソースの取り扱い
これが pkg_resources の名前の由来だと思う
easy_install コマンド
パッケージインストーラー
cheeseshop からダウンロード
egg ディレクトリにインストール
依存ライブラリがあればそれもインストール
multi-versioning 可能
pip との関係
$ ez_setup.py
$ easy_install pip
$ pip install virtualenv
$ virutalenv .venv
$ .venv/bin/pip --version
distribute を覚えていますか?
setuptools がメンテされないのでフォークされた
0.6 ~ 0.6.49
0.7.x は setuptools との合流用
egg とはなんだったのか?
setuptools によって持ち込まれたパッケージング関連の様々
なツールや規約
http:
//peak.telecommunity.com/DevCenter/PythonEggs
egg の中身
egg info
egg フォーマット
egg ディレクトリ
名前空間パッケージ (pkg_resources.declare_namespace)
egg_info
metadata の拡張
entry_point.txt
dependencies.txt
egg フォーマットの作り方
$ python setup.py bdist_egg
egg フォーマットの中身
egg_info メタデータ
python パッケージ
egg フォーマットについて
ピュア python の配布物でも python バージョン固定
バイナリ拡張を含む場合は便利だったかもしれない
egg ディレクトリ
site-packages 以下に egg ごとのディレクトリを作る
easy_install.pth に egg ディレクトリを登録する
egg ディレクトリの効用
multi-version mode バージョン違いのパッケージを
site-packages にインストール可能
easy_install -m で easy_install.pth には egg を登録しない
状態
pkg_resources.requres で指定のバージョンの egg を
import 可能にする
名前空間パッケージ
__import__('pkg_resources').declare_namespace(__name__)
pip は egg を使わないの?
egg フォーマットの配布物をダウンロードすることはな
かった
sdist から egg_info を使って依存ライブラリを解決するため、
setuptools は必須だった
デフォルトでは site-packages ディレクトリ以下で egg ディレ
クトリ構成にしないようになっていた
pip が sdist をインストールするとき
setup.py install no-dep とかつけてるはず
setup.py bdist_egg egg を site-packages に展開
setup.py bdist_wheel wheel を site-packages に展開
pep517.build wheel を site-packages に展開
egg の後継 1
wheel フォーマット/PEP517
$ python -m pep517.build
metadata 2.1
markdown 使える
entry point は egg のままだよ!
egg の後継 1
PEP420 Implicit Namespace Packages
ごちゃごちゃやらずにただのディレクトリにすればよくね?
virtualenv/venv で egg ディレクトリいらないよね
プロジェクトごとに site-packages を切り替えるので
multi-verjoning いらない
pip は egg ディレクトリを使わずにフラットにインストール
する
setuptools はもう要らないのか?
C 拡張を扱える
名前空間パッケージを扱える
PEP517 に対応している
さよなら python2
setuptools はまだ元気です
1 of 27

Recommended

みんなのPython勉強会#77 パッケージングしよう by
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようAtsushi Odagiri
1.8K views46 slides
Pythonとパッケージングと私 by
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私Atsushi Odagiri
19K views41 slides
PYTHON PACKAGING (PyFes 2012.03 発表資料) by
PYTHON PACKAGING (PyFes 2012.03 発表資料)PYTHON PACKAGING (PyFes 2012.03 発表資料)
PYTHON PACKAGING (PyFes 2012.03 発表資料)Takayuki Shimizukawa
1.6K views46 slides
Easy caching and logging package using annotation in Python by
Easy caching and logging package using annotation in PythonEasy caching and logging package using annotation in Python
Easy caching and logging package using annotation in PythonYasunori Horikoshi
388 views23 slides
パッケージングの今 by
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
22.6K views31 slides
パッケージングの呼び声 Python Charity Talks in Japan 2021.02 by
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02Atsushi Odagiri
4.5K views32 slides

More Related Content

What's hot

Distutil setuptools distribute by
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distributeAtsushi Odagiri
1.9K views25 slides
Pycon2014 django performance by
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performancehirokiky
12.4K views59 slides
Puppet入門 by
Puppet入門Puppet入門
Puppet入門Tomita Akiyoshi
2.1K views41 slides
ひのきのぼうだけで全クリ目指す by
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指すAromaBlack
1.5K views35 slides
パッケージングの今と未来 by
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
6.8K views42 slides
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド by
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
16.1K views25 slides

What's hot(20)

Distutil setuptools distribute by Atsushi Odagiri
Distutil setuptools distributeDistutil setuptools distribute
Distutil setuptools distribute
Atsushi Odagiri1.9K views
Pycon2014 django performance by hirokiky
Pycon2014 django performancePycon2014 django performance
Pycon2014 django performance
hirokiky12.4K views
ひのきのぼうだけで全クリ目指す by AromaBlack
ひのきのぼうだけで全クリ目指すひのきのぼうだけで全クリ目指す
ひのきのぼうだけで全クリ目指す
AromaBlack1.5K views
パッケージングの今と未来 by Atsushi Odagiri
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
Atsushi Odagiri6.8K views
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド by Etsuji Nakai
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
Etsuji Nakai16.1K views
debexpo(mentors.d.n)をハックするには by kenhys
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
kenhys224 views
パッケージングを支える技術 pyconjp2016 by Atsushi Odagiri
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
Atsushi Odagiri4.4K views
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12 by Takanori Suzuki
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
Takanori Suzuki3K views
python-twitterを用いたTwitterデータ収集 by Hikaru Takemura
python-twitterを用いたTwitterデータ収集python-twitterを用いたTwitterデータ収集
python-twitterを用いたTwitterデータ収集
Hikaru Takemura68.8K views
Ansible 2.8 アップデート情報 -機能追加と注意点- by akira6592
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
akira659217.2K views
Ansible2.9 ネットワーク対応のアップデート #ansiblejp by akira6592
Ansible2.9 ネットワーク対応のアップデート #ansiblejpAnsible2.9 ネットワーク対応のアップデート #ansiblejp
Ansible2.9 ネットワーク対応のアップデート #ansiblejp
akira65929.7K views
2日間Fabricを触った俺が
 色々解説してみる by airtoxin Ishii
2日間Fabricを触った俺が
 色々解説してみる2日間Fabricを触った俺が
 色々解説してみる
2日間Fabricを触った俺が
 色々解説してみる
airtoxin Ishii4.4K views
Fabricでサーバー管理をDRYにしよう by max747
Fabricでサーバー管理をDRYにしようFabricでサーバー管理をDRYにしよう
Fabricでサーバー管理をDRYにしよう
max74710.7K views
Cakephp勉強会@tokyo #4 by ichikaway
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway1.1K views
Ansible ではじめる ネットワーク自動化(Ansible 2.9版) by akira6592
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
Ansible ではじめる ネットワーク自動化(Ansible 2.9版)
akira65922.4K views

Similar to eggとはなんだったのか 栄光のsetuptools

書こう! 使おう! 単体テスト by
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テストryohji ikebe
199 views32 slides
書こう! 使おう! 単体テスト by
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テストryohji ikebe
330 views32 slides
Visual studio de debug by
Visual studio de debugVisual studio de debug
Visual studio de debugKazushi Kamegawa
5.4K views35 slides
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築 by
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
2.3K views45 slides
はじめてのCodeIgniter by
はじめてのCodeIgniterはじめてのCodeIgniter
はじめてのCodeIgniterYuya Matsushima
6.4K views65 slides
環境構築自動化ツールのご紹介 by
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
2.7K views23 slides

Similar to eggとはなんだったのか 栄光のsetuptools(20)

書こう! 使おう! 単体テスト by ryohji ikebe
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe199 views
書こう! 使おう! 単体テスト by ryohji ikebe
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
ryohji ikebe330 views
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築 by Hideharu MATSUFUJI
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI2.3K views
環境構築自動化ツールのご紹介 by Etsuji Nakai
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
Etsuji Nakai2.7K views
Cent osにpyhtonをインストールしてみよう by 2bo 2bo
Cent osにpyhtonをインストールしてみようCent osにpyhtonをインストールしてみよう
Cent osにpyhtonをインストールしてみよう
2bo 2bo4.1K views
Jubatus: Jubakitでもっと楽をしよう by Tetsuya Shioda
Jubatus: Jubakitでもっと楽をしようJubatus: Jubakitでもっと楽をしよう
Jubatus: Jubakitでもっと楽をしよう
Tetsuya Shioda310 views
Code igniterでテスト駆動開発 資料作成中 by Takako Miyagawa
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa4K views
できる!KickstartとAnsible! by Wataru NOGUCHI
できる!KickstartとAnsible!できる!KickstartとAnsible!
できる!KickstartとAnsible!
Wataru NOGUCHI4.2K views
Personal Cloud Automation by Etsuji Nakai
Personal Cloud AutomationPersonal Cloud Automation
Personal Cloud Automation
Etsuji Nakai2.6K views
Pythonでの開発を効率的に進めるためのツール設定 by Atsushi Odagiri
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
Atsushi Odagiri46.7K views
PyQtではじめるGUIプログラミング by Ransui Iso
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
Ransui Iso309.7K views
勉強会 環境構築編 by gikuko gikuko
勉強会 環境構築編勉強会 環境構築編
勉強会 環境構築編
gikuko gikuko319 views
Perlワンライナーで全てのモジュールにuse v5.8.0つける! by debug-ito
Perlワンライナーで全てのモジュールにuse v5.8.0つける!Perlワンライナーで全てのモジュールにuse v5.8.0つける!
Perlワンライナーで全てのモジュールにuse v5.8.0つける!
debug-ito647 views
ネットワークエンジニアのための Puppet / Chef by npsg
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg8.1K views
クックパッドのスケーリング by Satoshi Takada
クックパッドのスケーリングクックパッドのスケーリング
クックパッドのスケーリング
Satoshi Takada1.9K views

More from Atsushi Odagiri

async/await の向こう側 PyCon Kyushu 2022 by
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022Atsushi Odagiri
263 views51 slides
pyconjp 2019 LT 今日のsetuptools by
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolsAtsushi Odagiri
5.9K views18 slides
Python3 移行への軌跡 by
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡Atsushi Odagiri
3.3K views13 slides
Sqlalchemy sqlの錬金術 by
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術Atsushi Odagiri
2.6K views31 slides
Clack meetup #1 lt by
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 ltAtsushi Odagiri
1.1K views13 slides
Pyramid入門 by
Pyramid入門Pyramid入門
Pyramid入門Atsushi Odagiri
13.7K views54 slides

More from Atsushi Odagiri(20)

async/await の向こう側 PyCon Kyushu 2022 by Atsushi Odagiri
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
Atsushi Odagiri263 views
pyconjp 2019 LT 今日のsetuptools by Atsushi Odagiri
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
Atsushi Odagiri5.9K views
Pyconjp2012 memory-of-europython by Atsushi Odagiri
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
Atsushi Odagiri974 views
エキPy lt repoze.whoの紹介 by Atsushi Odagiri
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
Atsushi Odagiri1.2K views
BPStudy#54 そろそろPython3 by Atsushi Odagiri
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
Atsushi Odagiri3.7K views
フレームワークなしでWSGIプログラミング by Atsushi Odagiri
フレームワークなしでWSGIプログラミングフレームワークなしでWSGIプログラミング
フレームワークなしでWSGIプログラミング
Atsushi Odagiri1.3K views
Nose 鼻をきかせてテストせよ by Atsushi Odagiri
Nose  鼻をきかせてテストせよNose  鼻をきかせてテストせよ
Nose 鼻をきかせてテストせよ
Atsushi Odagiri1.6K views

Recently uploaded

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
129 views42 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
23 views38 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
73 views26 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
71 views29 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
121 views64 slides

Recently uploaded(11)

今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views

eggとはなんだったのか 栄光のsetuptools