SlideShare a Scribd company logo
Pythonを取り巻く開発環境

    id : ymotongpoo




                      1"
今日の資料

•  細かい説明はブログに書いた
 –  http://ymotongpoo.hatenablog.com/entry/
    2012/09/16/090842

•  スライドも載せた
 –  https://docs.google.com/open?
    id=0B5k3Cg7nkTt1UnRVbTNhYl9PNjA
なのでスライドと僕を見て
    話を聴いて
 どんどん質問して下さい
Agenda
•  自己紹介
•  今日の概要
•  ローカル開発環境
 –  コード編集
 –  Pythonの管理
 –  パッケージ管理
 –  ワークスペース
 –  テスト
•  統合環境
 –  継続テスト
 –  ドキュメント
お前、だれよ?
•  id: ymotongpoo(とんぷー)
 – YAMAGUCHI::weblog
   http://ymotongoo.hatenablog.com


•  YouTube
•  翻訳
 – Jinja2
 – Tornado
Agenda
•  自己紹介
•  今日の概要
•  ローカル開発環境
 –  コード編集
 –  Pythonの管理
 –  パッケージ管理
 –  ワークスペース
 –  テスト
•  統合環境
 –  継続テスト
 –  ドキュメント
概要

•  話すこと
 – Pythonで開発を行う際の土台作り
 – Python初心者向け
  •  もう環境構築のことで悩まない
 – 他言語経験者向け
  •  Pythonの文法がひと通りわかったらこれ
     を読んで下さい
概要

•  話さないこと
 – コーディング規約
 – レビュー制度
 – Web開発のベストプラクティス


•  今日は部品についてのお話
Agenda
•  自己紹介
•  今日の概要
•  ローカル開発環境
 –  コード編集
 –  Pythonの管理
 –  パッケージ管理
 –  ワークスペース
 –  テスト
•  統合環境
 –  継続テスト
 –  ドキュメント
ローカル開発環境

•  コード編集
•  Pythonの管理
•  パッケージ管理
•  ワークスペース
•  テスト
コード編集
        好きなモノを使え!!!
•    Emacs
•    Vim
•    Sublime Text 2
•    PyCharm
•    Eclipse
ローカル開発環境

•  コード編集
•  Pythonの管理
•  パッケージ管理
•  ワークスペース
•  テスト
Pythonの管理

•  複数バージョンのPythonを管理する

                   Python 2.7   メインで使うPython
Operation System




                   Python 2.6

                   Python 3.1
                                検証等で使うPython
                   Python 3.2


                   Python 3.3
Pythonの管理

•  複数バージョンを統一して管理する
   方法を考える
 Linux/Unixの例   Windowsの例
Pythonの管理

•  Windows
             インストール先指定可   バイナリ



  MSIパッケージ




    VC++
Pythonの管理

•  Linux
                  インストール先指定可   バイナリ



   apt-get, yum




      make
Pythonの管理

•  Mac OS X
              インストール先指定可   バイナリ


   homebrew                homebrew
   MacPorts                MacPorts


     dmg



    make
ローカル開発環境

•  コード編集
•  Pythonの管理
•  パッケージ管理
•  ワークスペース
•  テスト
パッケージ管理

•  実用上パッケージ管理は不可欠

                                    様々な場所からパッ
                                    ケージをインストール      PyPI
                   Python 2.7
Operation System




                                                    VCS
                   site'packages"   bucho
                                    aodag
                   Python 2.6       lxml         tarball, zip
                                    nose
                   Python 3.1

                   Python 3.2

                   Python 3.3
パッケージ管理

•  setup.py
  – distutils, setuptools, distribute
•  easy_install
  – setuptools, distribute
•  pip
•  pysetup
  – distutils2
パッケージ管理

•  関連パッケージの歴史的経緯
昔         setup.pyを書くためのモジュール
          →いちいちzipから入れるのめんどい
          →easy_install(& cheeseshop)


    distutils       setuptools     distribute



         easy_installの壁    Python 3の壁
         拡張メタデータの壁
パッケージ管理

   •  関連パッケージの歴史的経緯
      現在∼将来
              Python 2.x          Python 3.x              未だにまともに
                                                          Python3で動
                                                          かない
                     pip              pip

             利用                   利用                      Python3.3で標準
終了                 easy_install    easy_install           に取り込みに失敗

setuptools        distribute      distribute      distutils2

                  distutils        distutils      packaging
パッケージ管理

•  setup.py
  – 配布するPythonパッケージを作成する
    際にはかならず必要
  – 最終的にはこれだけで必要なことが出
    来るべき
    •  testを走らせる
    •  C/API拡張のビルド
パッケージ管理

•  easy_install
  – setuptoolsより利用可能になったパッ
    ケージインストーラ
  – distributeのものを利用すること
パッケージ管理




•  ''upgrade,"'U":"                      "
•  ''always'unzip,"'Z":"zip   "
•  ''mul:'version,"'m":"          "or"       "
パッケージ管理

•  pip
  – リリース当時はeasy_installよりもイケ
    メンだった
  – 今も便利です
パッケージ管理




•  install":"            "
     •  ''upgrade,"'U":"                   "
•  uninstall":"   "
•  freeze":"                           "
•  bundle":"                 zip   "
パッケージ管理

•  pysetup(参考)
 – distutils2同梱のコマンド
 – Python3.3でpackagingが標準で入
   るときに取り込まれる予定だった
ローカル開発環境

•  コード編集
•  Pythonの管理
•  パッケージ管理
•  ワークスペース
•  テスト
ワークスペース

•  開発環境毎にパッケージを分離
                                    システム直のPythonで開発すると

                   Python 2.7       プロジェクトA        プロジェクトB
Operation System




                                    •  bucho 1.0   •  bucho 2.0
                   site'packages"   •  aodag 1.1   •  aodag 1.2
                                    …              …
                   Python 2.6       に依存            に依存
                   Python 3.1

                   Python 3.2       パッケージのバージョンで不都合
                   Python 3.3
ワークスペース

•  プロジェクト毎に分けよう
                                プロジェクトA

                   Python 2.7    Python 2.7   •  Pythonバイナリ
                                              •  site-packages
Operation System




                                 bucho 1.0
                   Python 2.6    aodag 1.1    を持った環境を別
                                              途作成することで、
                   Python 3.1   プロジェクトB
                                              分離が可能になる。
                                 Python 2.7
                   Python 3.2
                                 bucho 2.0
                                 aodag 1.2
                   Python 3.3
ワークスペース

•  virtualenv (virtualenvwrapper)
•  zc.buildout
•  venv (Python 3.3から)
ワークスペース

•  virtualenv
  – 仮想環境作る専用のツール
  – 使いやすい
ワークスペース

•  virtualenvwrapper
 – virtualenvがより使いやすくなる
ワークスペースの管理

•  zc.buildout
  – ビルドツールなので汎用性高い
  – システムのsite-pakagesを引きずる
  – レシピ見つけるのが大変
  – buildout.cfg書くの慣れるまで大変
ワークスペースの管理

•  zc.buildout
  1.  初期化
  2.  buildout.cfg
  3.  環境作成
ワークスペースの管理

•  venv
  – Python 3.3から標準で入った
  – パッケージ管理が標準だとしょぼいの
    で片手落ち
ローカル開発環境

•  コード編集
•  Pythonの管理
•  パッケージ管理
•  ワークスペース
•  テスト
テスト

•  テストはなるべく自動化したい
                                プロジェクトA

                   Python 2.7    Python 2.7

                                              Test Suite
Operation System




                                 bucho 1.0
                   Python 2.6    aodag 1.1


                   Python 3.1


                   Python 3.2        ①テストスイートを書く仕組み
                                     ②テストを実行する仕組み
                                     の両方が必要
                   Python 3.3
テスト

•  unittest, doctest
•  nose, py.test
テスト

•  unittest, doctest
  – 標準で入っている
  – setup.pyにはこれしか含まないべき
テスト

•  nose, py.test
  – どっちも超メジャー
  – noseはプラグイン書ける
    •  逆にいうとプラグイン無いと困る
  – pytestは後発なので単体で便利
    •  でもプラグイン書けない
  – どっちを使うかは好み
テスト

•  複数のバージョンのテスト
                                プロジェクトA

                   Python 2.7    Python 2.7

                                               Test Suite
Operation System




                                 bucho 1.0
                   Python 2.6    aodag 1.1


                   Python 3.1                  Python 2.6

                                               bucho 1.0
                   Python 3.2                  aodag 1.1
                                同じテストを自動
                                で複数の環境で走
                   Python 3.3   らせたい          プロジェクトA
テスト

•  tox
•  zc.buildout
テスト

•  tox
  – 各テスト環境のvirtualenvを自動作成
    &自動テスト実行
  – py.testと同じプロジェクトチームなの
    で相性が良い
テスト

•  tox
  1.  tox.ini書く
  2.  toxコマンド
Agenda
•  自己紹介
•  今日の概要
•  ローカル開発環境
 –  コード編集
 –  Pythonの管理
 –  パッケージ管理
 –  ワークスペース
 –  テスト
•  統合環境
 –  継続テスト
 –  ドキュメント
統合環境

•  継続テスト
•  ドキュメント
継続テスト

•  VCSと連携した自動ビルドシステム

                                                        VCS
                                                      bucho 1.0     xUnit.xml
                                                      aodag 1.1

                                プロジェクトA                Test Suite
                   Python 2.7    Python 2.7
Operation System




                                 bucho 1.0     Test Suite
                   Python 2.6    aodag 1.1


                   Python 3.1

                   Python 3.2                 ポーリングやフックで
                                              テストを実施する
                   Python 3.3
継続テスト

•  Jenkins (+plugin)
  – BuildHive
•  Travis CI
継続テスト

•  Jenkins
  – 言わずと知れた継続インテグレーション
    システム
  – Pluginを入れることでPythonのテス
    トランナーを走らせることが可能
    •  Shining Panda Plugin
    •  Python Plugin
継続テスト

•  Travis CI
  – GitHub内のレポジトリをWebフック
    でビルドするホスティングサービス
  – 個人プロジェクト、OSSではメンテコ
    ストが格段に下がる
継続テスト

•  Travis CI
  – .travis.yaml
統合環境

•  継続テスト
•  ドキュメント
ドキュメント

•  製品と連携したアップデートが必要
•  Sphinxを利用
•  継続的にリリースするためにCI環境
   を使用
 – Jenkins
 – Read The Docs
ドキュメント

•  Sphinx
  – 複数のreSTから相互参照含めた複雑な
    ドキュメントを生成可能
  – 複数の形式を生成(HTML, ePub,
    PDF)
ドキュメント

•  Jenkinsを用いる場合
 – ビルド成功時にドキュメントをデプロイ
   する仕組みを作る
 – 最悪ワークスペースを公開
ドキュメント

•  Read The Docs
 – Django製のSphinxドキュメント専用
   継続インテグレーションシステムおよび
   ホスティングサービス
 – Git, Mercurial, Subversionのレポジ
   トリとWebフックで連携
話も飽きたと思うので
 実例を考えてみます
構成案1

•  個人プロジェクト
                                                            Travis CI




                                                            Read The Docs


               make         virtualenv
               Python 2.7     Python 2.7
                                                  py.test
               Python 2.6    easy_install
Mac or Linux




                                            tox
               Python 3.1

               Python 3.2

               Python 3.3
構成案2

•  プロプライエタリ製品
                                                         Jenkins




               make         virtualenv
               Python 2.7     Python 2.7
                                                  nose
               Python 2.6    easy_install
Mac or Linux




                                            tox
               Python 3.1

               Python 3.2

               Python 3.3
構成案3

•  某BP社


      make         virtualenv
      Python 2.7     Python 2.7
                                   nose
                        pip
Mac

More Related Content

PDF
Python3 プログラミング勉強会
PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
PPTX
Pythonの環境導入 2014年春季版
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PDF
「Python言語」はじめの一歩 / First step of Python
PDF
密着!わたしのコンソールアプリ開発環境
KEY
Windowsにpythonをインストールしてみよう
PDF
PyQtではじめるGUIプログラミング
Python3 プログラミング勉強会
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
Pythonの環境導入 2014年春季版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
「Python言語」はじめの一歩 / First step of Python
密着!わたしのコンソールアプリ開発環境
Windowsにpythonをインストールしてみよう
PyQtではじめるGUIプログラミング

What's hot (20)

PDF
BPStudy#54 そろそろPython3
PPTX
勉強会 Cvml python基礎
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
PDF
XML-RPC : Pythonが「電池付属」と呼ばれる理由
PDF
Pyconjp2014_implementations
PDF
10分でわかるPythonの開発環境
PDF
Python × Herokuで作る 雑談slack bot
PDF
Pythonでゲーム作る
PPTX
QtでHello, World!!
PPTX
各OSにおいて、OpenCVをpythonから使う方法
PPTX
Pynyumon03 LT
ODP
PySide/QtWebkitで楽々 slideshare Hack
PDF
久しぶりのPythonでgoogleのアレを制御してみた
PDF
第1回python勉強会
PDF
scikit-learnを用いた機械学習チュートリアル
PDF
次世代言語 Python による PyPy を使った次世代の処理系開発
PDF
wxPython入門(大阪Pythonユーザの集まり2014/03)
PPTX
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
PPTX
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
PDF
パッケージングの今と未来
BPStudy#54 そろそろPython3
勉強会 Cvml python基礎
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
XML-RPC : Pythonが「電池付属」と呼ばれる理由
Pyconjp2014_implementations
10分でわかるPythonの開発環境
Python × Herokuで作る 雑談slack bot
Pythonでゲーム作る
QtでHello, World!!
各OSにおいて、OpenCVをpythonから使う方法
Pynyumon03 LT
PySide/QtWebkitで楽々 slideshare Hack
久しぶりのPythonでgoogleのアレを制御してみた
第1回python勉強会
scikit-learnを用いた機械学習チュートリアル
次世代言語 Python による PyPy を使った次世代の処理系開発
wxPython入門(大阪Pythonユーザの集まり2014/03)
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
パッケージングの今と未来
Ad

Viewers also liked (20)

PDF
PythonによるWebスクレイピング入門
PDF
Lambda(Python)のデプロイについて考えたというか作った
PDF
デプロイツールFabric
PDF
UI設計におけるスマートフォン対応のまとめ
PDF
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
PDF
レスポンシブWeb「デザイン」
PDF
WordPress基礎講座1 CMSの概要
PDF
マークアップとUX
PDF
jQuery Mobile 最新情報 & Tips
PPTX
AWS基礎
PDF
CSSコーディングを効率よくするおすすめプラグイン
PDF
スマートフォン対応、気をつけたいトラブル JavaScript編
PPTX
Awsをちゃんと使ってみた
PDF
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
PDF
マルチデバイス時代におけるWebサイトのUIについて
PDF
スマートフォン対応、気をつけたいトラブル
PDF
Javascriptを書きたくないヒ トのためのPythonScript
PDF
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
PDF
使いやすいWordPressのためのCSSのつくりかた
PDF
CSS の歩き方
PythonによるWebスクレイピング入門
Lambda(Python)のデプロイについて考えたというか作った
デプロイツールFabric
UI設計におけるスマートフォン対応のまとめ
CSS3 / JavaScriptで作るスマートフォンUIと落とし穴
レスポンシブWeb「デザイン」
WordPress基礎講座1 CMSの概要
マークアップとUX
jQuery Mobile 最新情報 & Tips
AWS基礎
CSSコーディングを効率よくするおすすめプラグイン
スマートフォン対応、気をつけたいトラブル JavaScript編
Awsをちゃんと使ってみた
WordPress テーマ Habakiri と公式ディレクトリへのテーマ登録
マルチデバイス時代におけるWebサイトのUIについて
スマートフォン対応、気をつけたいトラブル
Javascriptを書きたくないヒ トのためのPythonScript
レスポンシブ基礎 ~Webサイトをレスポンシブに する方法とそのメリット~
使いやすいWordPressのためのCSSのつくりかた
CSS の歩き方
Ad

Similar to Pythonを取り巻く開発環境 #pyconjp (20)

PPTX
190925 python-windows
PDF
PYTHON PACKAGING (PyFes 2012.03 発表資料)
PPTX
210728 mpy
PDF
Python Kyoto study
PPTX
基礎教養としてのUbuntuサーバ_後編.pptx
PPTX
Ossで作成するチーム開発環境
PDF
200527 ur
KEY
Composer による依存管理 と Packagist によるライブラリの公開
PDF
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
PPT
Python開発環境三種の神器
PDF
Introduction Pycon2010
PDF
書こう! 使おう! 単体テスト
PPTX
勉強会 環境構築編
PDF
Python パッケージの影響を歴史から理解してみよう!
PDF
Python界隈の翻訳プロジェクト
PPTX
ネットワークエンジニアのための Puppet / Chef
PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
PDF
Pythonによる並列プログラミング -GPGPUも-
PDF
書こう! 使おう! 単体テスト
PDF
How to run P4 BMv2
190925 python-windows
PYTHON PACKAGING (PyFes 2012.03 発表資料)
210728 mpy
Python Kyoto study
基礎教養としてのUbuntuサーバ_後編.pptx
Ossで作成するチーム開発環境
200527 ur
Composer による依存管理 と Packagist によるライブラリの公開
GMO プライベート DMP 開発で 取り組んできた DevOps と今後の展望
Python開発環境三種の神器
Introduction Pycon2010
書こう! 使おう! 単体テスト
勉強会 環境構築編
Python パッケージの影響を歴史から理解してみよう!
Python界隈の翻訳プロジェクト
ネットワークエンジニアのための Puppet / Chef
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
Pythonによる並列プログラミング -GPGPUも-
書こう! 使おう! 単体テスト
How to run P4 BMv2

More from Yoshifumi Yamaguchi (10)

PDF
20130824 Lightweight Language "Go" @LL matsuri
PPTX
20130316 プログラミング言語Go
PPTX
20130228 Goノススメ(BPStudy #66)
PDF
Sphinxで翻訳してたら本が出てた話
PDF
Learn You Some Erlang for great good! 日本語化プロジェクト
PDF
[20120410] @marqsの転職を祝うLT
PDF
YouTube APIの紹介
PDF
[20110219] pfffについて
PPTX
[20110129] sphinx theme collection 2011春
PDF
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)
20130824 Lightweight Language "Go" @LL matsuri
20130316 プログラミング言語Go
20130228 Goノススメ(BPStudy #66)
Sphinxで翻訳してたら本が出てた話
Learn You Some Erlang for great good! 日本語化プロジェクト
[20120410] @marqsの転職を祝うLT
YouTube APIの紹介
[20110219] pfffについて
[20110129] sphinx theme collection 2011春
[20101203] ドキュメントを作りたくなってしまう魔法のツールsphinx(山口発表用)

Pythonを取り巻く開発環境 #pyconjp