SlideShare a Scribd company logo
1 of 42
Download to read offline
パッケージングの今と未来
aodag
お前だれよ?
aodag = Atsushi ODAGiri
株式会社ビープラウド勤務
Pylonsproject.jp
Pythonサポーターズ
PyCon APAC 2013 パトロン
お前だれよ?(cont)
python1.5から!
文字列処理とか秘密の道具
Zope, TurboGears, Pylons/Paste/WSGI,
Repoze, Pyramid!
Django?なにそれ?
PythonのWebフレームワークってどのくらいZope
にするかってことだよね?
あじぇんだ
● パッケージングの今
● パッケージングの未来
● Python3.4に期待されること
ヽ(´_・ω・)_
こわくないよ
現在のツール
● distribute
○ setup.py
○ pkg_resources
○ egg
● virtualenv
● pip
what's setup.py?
配布物を作る、PYPIに登録やアップロードする、配
布物をインストールする
$ python setup.py test build sdist register
upload
$ python setup.py install
what's setup.py? (cont)
標準ライブラリ distutils
distutils.core.setup
拡張 setuptools/distribute
setuptools.setup
パッケージメタデータ 1.0
setup関数で作成
パッケージ名
バージョン
作成者、メンテナ
など
基本的な情報
egg-info
依存ライブラリ
プラグインのエントリポイントなど
拡張されたメタデータ
仮想環境の今の使い方
● virtualenvで仮想環境作成
○ virtualenvwrapperはそこそこ便利
● pipでパッケージインストール
$ mkvirtualenv some-project
(some-project) $ pip install pyramid
(some-project) $ pip freeze
helloコマンドの作成とパッケージング
$ mkvirtualenv hello
(hello) $ pip install pastescript
(hello) $ paster create hello
(hello) $ cd hello
(hello) $ pip freeze
(hello) $ pip install -e .
hello-0.0dev
hello/__init__.py
def hello():
print "Hello, world!"
hello/__main__.py
from . import hello
if __name__ == '__main__':
hello()
(hello) $ python -m hello
Hello, world!
メタデータ
(hello) $ python setup.py egg_info
(hello) $ cat hello.egg-info/PKG-INFO
(hello) $ cat hello.egg-info/entry_points.txt
console_scripts
setup.py
entry_points="""
[console_scripts]
hello=hello:hello
"""
(hello) $ pip install -e .
(hello) $ hello
Hello, world!
パッケージング
(hello) $ python setup.py sdist
(hello) $ ls dist
hello-0.0dev.tar.gz
公開(without PyPI)
bitbucketなど用意
例えば https://bitbucket.org/aodag/python-hello
$ hg init
$ hg add setup.py setup.cfg hello/__init__.py
hello/__main__.py
$ hg commit
$ hg push
リリース
リリースブランチ
$ hg branch rel-0.1
setup.cfg
;tag_build = dev ; コメントアウト
setup.py
version = "0.1"
リリース
$ hg commit
$ hg tag hello-0.1 # egg name
$ hg push --new-branch
https://bitbucket.org/aodag/python-
hello/get/hello-0.1.zip
インストールしてみよう
$ mkvirtualenv hello2
(hello2) $ pip install https://bitbucket.
org/aodag/python-hello/get/hello-0.1.zip
(hello2) $ pip freeze
パッケージングの未来
現在の問題点
● eggは標準じゃない
● eggはpure pythonのパッケージでもプラット
フォーム、pythonバージョンごとに作成
● setup.py には実際のところなんでも書けてしま
う
● Linuxディストリビューションなどのパッケージ管
理と競合する
packaging
python3.3に入る予定だった
setuptoolsなどの成果を標準化することが期待さ
れていた
entry_pointやscriptsなどの拡張性について議論し
きれてなかった
実装もなかなか進まなかった
python3.3からdrop
パッケージインストールデータベース
PEP376
配布物に含まれるファイルを追記
どのインストーラ(pipやdpkg,rpmなど)がインストー
ルしたのか?
ユーザーが指定したのか、依存関係の結果インス
トールされたのか?
などを記録
wheelパッケージコンテナ PEP427
eggから発展
パッケージインストールデータベースに対応
より柔軟なプラットフォーム対応
きちんとPEPで議論済
メタデータ2.0 PEP426
egg-infoなどから、追加項目
依存ライブラリや提供パッケージなど。
setuptoolsとdistributeが合流
setuptoolsがあまりにも更新やバグフィックスが遅
い
distributeにフォーク
distributeで2to3やpython3対応などが進む
setuptools0.7でdistributeが合流、成果をマージ
distribute0.7はsetuptools0.7以降へのアップグ
レード用
pypa
setuptools, pip, virtualenvなどの実装、メンテナン
スをするグループ
http://github.com/pypa
http://bitbucket.org/pypa
distlib/distil
distlib
パッケージング関連のPEPを実装
distil
distlibの機能をpipにマージするための実験的実
装
distlibのサポートPEP
database PEP376
metadata 2.0, 1.2, 1.1 PEP345,314,241
version PEP386,426
Wheel PEP427
現在の状況
pip
pip1.4でwheelに対応
setuptools
setuptools0.8で2to3を必要としなくなった ->
wheelにできるようになる
virtualenv
setuptools0.7以降に対応
残る問題
メタデータ2.0
distlibはメタデータ2.0をサポートしているが
pypackage.jsonを書かないといけない
bdist_wheelはsetup.pyからメタデータを生成する
が、対応しているのはメタデータ1.0
pyvenv
virtualenvの機能をPython標準にとりこみ
Python3.3以降で利用可能
virtualenvが標準ライブラリをコピーするのに対し
て、pyvenvはsite.pyの入れ替えのみで対応
未来を感じてみよう
Python3.3は入ってますよね?
$ mkdir hello33; cd hello33
$ pyvenv env
$ . env/bin/activate
(hello33) $ wget https://bitbucket.
org/pypa/setuptools/downloads/ez_setup.py
(hello33) $ wget https://raw.github.
com/pypa/pip/master/contrib/get-pip.py
Don't think FEEL
$ pip install -U setuptools==0.8
$ pip install -U https://github.
com/pypa/pip/archive/1.4rc2.tar.gz
$ pip install wheel
準備完了
wheeling!
C拡張あり
$ pip wheel Pillow
$ ls wheelhouse
Pillow-2.1.0-cp33-cp33m-linux_x86_64.whl
C拡張なし
$ pip wheel webob
$ ls wheelhouse
WebOb-1.2.3-py33-none-any.whl
use it!
インストールして使う
$ pip install wheelhouse/WebOb-1.2.3-py33-
none-any.whl
マウントして使う
import distlib.wheel
distlib.wheel.Wheel('wheelhouse/Pillow-2.1.0-
cp33-cp33m-linux_x86_64.whl')
import PIL
Python3.4に期待すること
pipをインストールするスクリプトをバンドル
distlibを標準ライブラリにとりこみ
心配事について
ツールは変わる?
pipは続投されるはず
setuptoolsは一部の機能をdistlibに任せるように
なるはず
パッケージング方法は変わる?
bdist_wheelがメタデータ2.0をサポートすれば、現
在のsetup.py方式のままいけるはず
まとめ
パッケージングの情報は分散していてわかりにくい
今後のパッケージング方法はPython3主体
Python2の間はsetuptoolsがわかればOK
公開しない場合でもsetup.py書こう

More Related Content

What's hot

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようKenji NAKAGAKI
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015SaitoTsutomu
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12Takanori Suzuki
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Katsuhiro Morishita
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングRansui Iso
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方Takesxi Sximada
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Atsuo Ishimoto
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406Shinya Okano
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?Aki Ariga
 
チームで活用するAnaconda入門
チームで活用するAnaconda入門チームで活用するAnaconda入門
チームで活用するAnaconda入門Takeshi Akutsu
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presenKouhei Maeda
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめYukitaka Uchikoshi
 

What's hot (20)

Windowsにpythonをインストールしてみよう
WindowsにpythonをインストールしてみようWindowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
 
Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版Pythonの環境導入 2014年春季版
Pythonの環境導入 2014年春季版
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
PyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミングPyQtではじめるGUIプログラミング
PyQtではじめるGUIプログラミング
 
サードパーティパッケージの歩き方
サードパーティパッケージの歩き方サードパーティパッケージの歩き方
サードパーティパッケージの歩き方
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
第1回python勉強会
第1回python勉強会第1回python勉強会
第1回python勉強会
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?なぜ科学計算にはPythonか?
なぜ科学計算にはPythonか?
 
プログラミング入門 Python超入門編
プログラミング入門 Python超入門編プログラミング入門 Python超入門編
プログラミング入門 Python超入門編
 
チームで活用するAnaconda入門
チームで活用するAnaconda入門チームで活用するAnaconda入門
チームで活用するAnaconda入門
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
Git pyfes201207-presen
Git pyfes201207-presenGit pyfes201207-presen
Git pyfes201207-presen
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめ
 

Similar to パッケージングの今と未来

今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPythonKeisuke Imura
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門kashew_nuts
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発shoma h
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Reportgree_tech
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介shoma h
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17Shinya Okano
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionssuserc75dc7
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトTetsuya Morimoto
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションTetsuya Morimoto
 
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoSecurity.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoRen Sakamoto
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解するTakuya Nishimoto
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementationsmasahitojp
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由Takayuki Shimizukawa
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Ai Makabi
 
Djangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組みDjangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組みShinya Okano
 
WindowsでPython
WindowsでPythonWindowsでPython
WindowsでPythondrillan
 

Similar to パッケージングの今と未来 (20)

今日から始めるPython
今日から始めるPython今日から始めるPython
今日から始めるPython
 
Django で始める PyCharm 入門
Django で始める PyCharm 入門Django で始める PyCharm 入門
Django で始める PyCharm 入門
 
次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発次世代言語 Python による PyPy を使った次世代の処理系開発
次世代言語 Python による PyPy を使った次世代の処理系開発
 
Python & PyConJP 2014 Report
Python & PyConJP 2014 ReportPython & PyConJP 2014 Report
Python & PyConJP 2014 Report
 
PyPy 紹介
PyPy 紹介PyPy 紹介
PyPy 紹介
 
Python札幌 2012/06/17
Python札幌 2012/06/17Python札幌 2012/06/17
Python札幌 2012/06/17
 
Python charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introductionPython charity talk in japan fastAPI introduction
Python charity talk in japan fastAPI introduction
 
Python界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクトPython界隈の翻訳プロジェクト
Python界隈の翻訳プロジェクト
 
PyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッションPyCon JP 2016 ビギナーセッション
PyCon JP 2016 ビギナーセッション
 
Security.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyoSecurity.gs fes 2010 in tokyo
Security.gs fes 2010 in tokyo
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
Pyconjp2014_implementations
Pyconjp2014_implementationsPyconjp2014_implementations
Pyconjp2014_implementations
 
『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由『自走プログラマー』 が我々に必要だった理由
『自走プログラマー』 が我々に必要だった理由
 
Introduction Pycon2010
Introduction Pycon2010Introduction Pycon2010
Introduction Pycon2010
 
Visasq
VisasqVisasq
Visasq
 
Pykonjp2014
Pykonjp2014Pykonjp2014
Pykonjp2014
 
Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )Python for Beginners ( #PyLadiesKyoto Meetup )
Python for Beginners ( #PyLadiesKyoto Meetup )
 
RgGen ご紹介
RgGen ご紹介RgGen ご紹介
RgGen ご紹介
 
Djangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組みDjangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組み
 
WindowsでPython
WindowsでPythonWindowsでPython
WindowsでPython
 

More from Atsushi Odagiri

みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようAtsushi Odagiri
 
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022Atsushi Odagiri
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02Atsushi Odagiri
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolsAtsushi Odagiri
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolsAtsushi Odagiri
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Atsushi Odagiri
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私Atsushi Odagiri
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡Atsushi Odagiri
 
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016Atsushi Odagiri
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術Atsushi Odagiri
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonAtsushi Odagiri
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid uniqueAtsushi Odagiri
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介Atsushi Odagiri
 

More from Atsushi Odagiri (20)

みんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしようみんなのPython勉強会#77 パッケージングしよう
みんなのPython勉強会#77 パッケージングしよう
 
async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022async/await の向こう側 PyCon Kyushu 2022
async/await の向こう側 PyCon Kyushu 2022
 
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02パッケージングの呼び声 Python Charity Talks in Japan 2021.02
パッケージングの呼び声 Python Charity Talks in Japan 2021.02
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
pyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptoolspyconjp 2019 LT 今日のsetuptools
pyconjp 2019 LT 今日のsetuptools
 
Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定Pythonでの開発を効率的に進めるためのツール設定
Pythonでの開発を効率的に進めるためのツール設定
 
Pythonとパッケージングと私
Pythonとパッケージングと私Pythonとパッケージングと私
Pythonとパッケージングと私
 
Python3 移行への軌跡
Python3 移行への軌跡Python3 移行への軌跡
Python3 移行への軌跡
 
パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016パッケージングを支える技術 pyconjp2016
パッケージングを支える技術 pyconjp2016
 
Sqlalchemy sqlの錬金術
Sqlalchemy  sqlの錬金術Sqlalchemy  sqlの錬金術
Sqlalchemy sqlの錬金術
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
Pyramid入門
Pyramid入門Pyramid入門
Pyramid入門
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
Bplt11 form alchemy
Bplt11 form alchemyBplt11 form alchemy
Bplt11 form alchemy
 
Python3でwebアプリ
Python3でwebアプリPython3でwebアプリ
Python3でwebアプリ
 
Pyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europythonPyconjp2012 memory-of-europython
Pyconjp2012 memory-of-europython
 
What makes pyramid unique
What makes pyramid uniqueWhat makes pyramid unique
What makes pyramid unique
 
エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介エキPy lt repoze.whoの紹介
エキPy lt repoze.whoの紹介
 
World plonedaylt
World plonedayltWorld plonedaylt
World plonedaylt
 
Setup.pysetup.cfg
Setup.pysetup.cfgSetup.pysetup.cfg
Setup.pysetup.cfg
 

パッケージングの今と未来