Successfully reported this slideshow.
Your SlideShare is downloading. ×

PYTHON PACKAGING (PyFes 2012.03 発表資料)

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 46 Ad
Advertisement

More Related Content

Slideshows for you (20)

Similar to PYTHON PACKAGING (PyFes 2012.03 発表資料) (20)

Advertisement

More from Takayuki Shimizukawa (20)

Recently uploaded (20)

Advertisement

PYTHON PACKAGING (PyFes 2012.03 発表資料)

  1. 1. 運用コストが半分になった! Pythonパッケージの極意
  2. 2. そんなウマい話は無ぇ!
  3. 3. PYTHON PACKAGING Python2/3対応
  4. 4. おまえ誰よ 清水川 貴之 (@shimizukawa) ● 代々木のBeProudでそろそろ1年 ● PyCon JP 2012 副座長 ● インドネシア帰り(印度尼西亜 【尼】) ● 書籍 ○ 2010「エキスパートPythonプログラミング」 ○ 2012「Pythonプロフェッショナルプログラミング」
  5. 5. BP本 ● 2940円 ● 430ページ ● 3/27(火) ● 秀和システム コンセプト ● BPStyle
  6. 6. BP本の目次 4部構成 1. Pythonで開発しよう 2. チーム開発のサイクル 3. サービス公開 4. 開発を加速するテクニック
  7. 7. 第1部:Pythonで開発しよう 第1章:Pythonを始めよう 第2章:Webアプリケーションを作る Appendix A: VirtualBoxのセットアップ Appendix B: OS(Ubuntu)のセットアップ
  8. 8. 第2部:チーム開発のサイクル 第3章:チームの開発環境を整える 第4章:ドキュメントの基盤を整える 第5章:課題管理とレビュー 第6章:モジュール分割設計と単体テスト 第7章:パッケージングと環境セットアップの自動化 第8章:Mercurialによるソースコード管理 第9章:Jenkinsで継続的インテグレーション
  9. 9. 第3部:サービス公開 第10章:環境構築とデプロイの自動化 第11章:アプリケーションのパフォーマンス改善 第12章:Google App Engine 第4部:開発を加速するテクニック 第13章:テストを味方にする 第14章:Djangoを便利に使う 第15章:便利なPythonモジュールを使おう
  10. 10. BP本 ● 2940円 ● 430ページ ● 3/27(火) ● 秀和システム コンセプト ● BP得
  11. 11. 今日のレシピ 1. Pythonパッケージング過去・現在・未来 2. Distutils2 / packaging 3. pysetupの使い方 4. パッケージの作り方 5. 次の課題
  12. 12. 今日のレシピ 1. Pythonパッケージング過去・現在・未来 2. Distutils2 / packaging 3. pysetupの使い方 4. パッケージの作り方 5. 次の課題
  13. 13. 現在の状況 複数の方法が混在 ● パッケージング ● 配布 ● 発見 ● インストール
  14. 14. 過去と現在 過去 現在 未来 setuptools Distribute pip 利用 distutils distutils
  15. 15. 現在と未来 過去 現在 未来 setuptools Distribute pip delete 機 能 を 取 り 利用 込 み distutils distutils distutils2 packaging
  16. 16. 新しいライブラリ Distutils2 / packaging 今までの制限を解消した新しいライブラリ ● Python標準ライブラリ ● パッケージ検索機能 ● インストールコマンド ● アンインストール機能 ● 外部依存ライブラリ管理
  17. 17. 未来 新標準 ● PEP345: Metadata1.2 ● PEP376: インストール情報DB ● PEP386: バージョン番号標準 上記を実装した新しいライブラリ ● packaging : Python-3.3同梱 ● Distutils2 : Python-2.5 - 3.2 向けに配布
  18. 18. PEP345 : Metadata 1.2 ゴール 新しいメタデータを定義して、他の配布物との依存や関係を今 よりうまく定義します。 モチベーション これまでもsetutools/distributeのinstall_requiresでモジュールの 依存関係は定義出来ましたが、これは標準ではありませんでし た。 また、現在のinstall_requiresでの指定はsetup.pyを動かさないと 依存関係が分からないため、OSやPythonのバージョンによって 動かせるかどうか左右されていました。
  19. 19. PEP376 : インストール情報データベース ゴール 複数のパッケージ管理ソフトで相互運用できる、Pythonのイン ストール情報データベースを用意しよう。 モチベーション 既存のツール(distutils, setuptools/distribute/easy_install, pip) はそれぞれ独自の方法でインストール情報を管理しています。 多くのツールがアンインストールをサポートしていません。 インストール済みパッケージ情報を取得するような標準APIがあ りません。
  20. 20. PEP386 : バージョン番号標準 ゴール バージョン番号付けの標準化 モチベーション パッケージのどのバージョンがインストールされているかを知り たい。標準がない状態でこういった機能を作るのは、pip等のイ ンストーラーにとって非常に厳しかった。 Pseudo-format N.N[.N]+[{a|b|c|rc}N[.N]+][.postN][.devN]
  21. 21. こんなバージョン番号があったよ ● 2C.py 02 Jun 2010 ● abl.jquery.ui 1.8.7-3 ● abu.rpc 0.2.7-rc5-protobuf-2.4 ● Agatsuma 0.2.176.default. 3499b00918ca.tip ● aksy 0.3-SNAPSHOT-r1389 ● appwsgi default
  22. 22. 新しいパッケージングライブラリ ゴール 新しい標準のパッケージングライブラリを提供します。新標準を 実装し、これまでのライブラリの機能を拡張しています。 モチベーション setuptoolsは多くの価値のある機能を提供してくれました。しか し、あくまでもdistutilsの上で動作するようにデザインされていま した。 distutilsの実装を変更することは既存の全てのツールが動作し なくなる可能性があります。このため、新標準を実装するために 新しいライブラリにする必要がありました。
  23. 23. 今日のレシピ 1. Pythonパッケージング過去・現在・未来 2. Distutils2 / packaging 3. pysetupの使い方 4. パッケージの作り方 5. 次の課題
  24. 24. pysetupの使い方:Srcインストール 従来のインストール ソースディレクトリで python setup.py install 新しい方法 ソースディレクトリで pysetup run install_dist
  25. 25. pysetupの使い方:Zipインストール 従来のインストール zipファイルを展開して python setup.py install 新しい方法 pysetup install widget-0.9.7.zip
  26. 26. pysetupの使い方:PyPIインストール 従来のインストール Python標準ではPyPIインストール出来ない pip install blockdiag 新しい方法 pysetup install blockdiag
  27. 27. pysetupの使い方:URLインストール 従来のインストール Python標準ではURLインストール出来ない pip install http://......../bucho-0.1.1.tgz 新しい方法 pysetup install http://......../bucho-0.1.1.tgz
  28. 28. pysetupの使い方:アンインストール 従来のアンインストール Python標準ではアンインストールは手動 pip uninstall blockdiag 新しい方法 pysetup remove blockdiag
  29. 29. pysetupの使い方:PyPI検索 従来のPyPI検索 Python標準ではPyPI検索とか無い pip search bucho 新しい方法 pysetup search bucho
  30. 30. pysetupの使い方:インストール一覧 従来の一覧取得 site-packagesやeasy_install.pthを見る pip freeze 新しい方法 pysetup list
  31. 31. pysetupの使い方:メタデータ参照 従来のメタデータ参照 Python標準ではメタデータを持っていない easy_install/pipならPKG-INFOファイルを見る 新しい方法 pysetup metadata bucho -f name -f version
  32. 32. pysetupの使い方:Graph 従来には無いコマンド Python標準, easy_install, pip には無い にゅーふぇーす : graph pysetup graph blockdiag
  33. 33. 今日のレシピ 1. Pythonパッケージング過去・現在・未来 2. Distutils2 / packaging 3. pysetupの使い方 4. パッケージの作り方 5. 次の課題
  34. 34. パッケージの作り方 ドキュメントを読んでいると以下のように書いてあ る 3.2. A Simple Example from packaging.core import setup setup(name='foo', version='1.0', py_modules=['foo'])
  35. 35. パッケージの作り方 頭から読めば丁寧に書いてあった 1. Packaging tutorial $ pysetup create 対話形式でsetup.cfg作れる
  36. 36. パッケージの作り方 既存のsetup.py持ってるんだけど... setup.pyのあるディレクトリで $ pysetup create A legacy setup.py has been found. Would you like to convert it to a setup.cfg? (y/n) [y]: y Wrote "setup.cfg".  
  37. 37. setup.cfgの書き方 2. Specification of the setup.cfg file 嫁 [metadata] name = bucho version = 0.1.1 summary = `bucho` is a package for exercises. : classifier = Topic :: Utilities Programming Language :: Python :: 3.2 : [files] packages = bucho
  38. 38. 後方互換パッケージの作り方 古い環境のためにsetup.pyが必要なんだけど... setup.cfgのあるディレクトリで $ pysetup generate-setup The setup.py was generated
  39. 39. 今日のレシピ 1. Pythonパッケージング過去・現在・未来 2. Distutils2 / packaging 3. pysetupの使い方 4. パッケージの作り方 5. 次の課題
  40. 40. 課題 1. ドキュメントが古い ○ Distutils2のドキュメントは放置されてるのでPython3.3 のpackagingのドキュメントを読もう 2. Windowsで動かない機能が多い ○ みんなでデバッグしよう! 3. d2/p にはeggサポートが無い ○ MLで*.pbdサポートが議論されている 4. pluginの仕組みが無い ○ setuptoolsのentry_points相当の機能が無い
  41. 41. 課題 ドキュメントが古い ○ packagingのドキュメントが古くて試すのが大変 from packaging.core import setup とか存在しない 5. "import distutils2" vs "import packaging" ○ Python 3.3 以前と以降で名前が違う try: import packaging except ImportError: import distutils2 as packaging
  42. 42. 課題 7. ドキュメントが古い ○ 「今後1ヶ月で書いていくよ」って開発者がMLで言ってた 8. virtualenvとか未対応? ○ virtualenv環境下でpysetup install Unable to write in "/usr/lib/python2.7/site-packages". Do you have the permissions ?
  43. 43. まとめ 期待の新星 Distutils2/packaging 運用コストはもしかしたら半分に減るかもしれない でもまだまだ実装やドキュメントが追いついてない みんなで叩いて良くしていこう!
  44. 44. PyConJP 2012 スタッフ募集
  45. 45. BP本 ● 2940円 ● 430ページ ● 3/27(火) ● 秀和システム
  46. 46. Terima kasih 【尼】ありがとう

×