Successfully reported this slideshow.
Your SlideShare is downloading. ×

Distutil setuptools distribute

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 25 Ad
Advertisement

More Related Content

Slideshows for you (20)

Advertisement

More from Atsushi Odagiri (20)

Recently uploaded (20)

Advertisement

Distutil setuptools distribute

  1. 1. setup.py distutils/setuptools/distribute BPStyle #7 aodag
  2. 2. Pythonのパッケージインストールしたことあ るよね $ wget http://pypi.python. org/packages/source/b/bucho/bucho-0.0.4.tar.gz $ tar xvf bucho-0.0.4.tar.gz $ cd bucho-0.0.4 $ python setup.py install
  3. 3. setup.py これはなにをするものぞ
  4. 4. setup.py インストールとかする 配布するときにつけとく
  5. 5. setup.pyの中身 from distutils.core import setup setup(name="bp.bucho", version="0.1")
  6. 6. パッケージメタデータ Metadata-Version: 1.0 Name: bp.bucho Version: 0.1 Summary: UNKNOWN Home-page: UNKNOWN Author: UNKNOWN Author-email: UNKNOWN License: UNKNOWN Description: UNKNOWN Platform: UNKNOWN
  7. 7. from distutils.core import setup setup(     name="bp.bucho",      version="0.1",     author="Atsushi Odagiri",     author_email="aodagx@gmail.com",     license="MIT",     url="http://beproud.jp",     description="bucho shows things",     long_description="""     bp.bucho     ====================     bp.bucho is a sample package distribution.     """,     packages="bp.bucho", )
  8. 8.   Metadata-Version: 1.0 Name: bp.bucho Version: 0.1 Summary: bucho shows things Home-page: http://beproud.jp Author: Atsushi Odagiri Author-email: aodagx@gmail.com License: MIT Description: bp.bucho         ====================                  bp.bucho is a sample package distribution.          Platform: UNKNOWN
  9. 9. setup.pyを実行 build Pythonモジュールのコンパイルや、C拡張のコンパイルなど install 指定ディレクトリ(通常はsite-packages)以下にインストール大正の パッケージをコピー sdist ソースディストリビューションを作成 bdist_wininst windows向けインストーラ付きのディストリビューションを作成
  10. 10. setuptools/distribute distutilsの拡張 setup関数の引数が追加されている コマンドが追加されている プラッガブルな仕組みを提供
  11. 11. setuptoolsとdistributeの違い setuptoolsのソースを元にdistributeが作られた distributeはpython3対応 distributeは機能が増えている distributeはバグが直っている 今後は、distribute使おう 少なくともdistutils2が完成するまでは.
  12. 12.   $ curl -O http://python-distribute.org/distribute_setup.py $ python distribute_setup.py または $ pip install distribute 確認 $ easy_install --version distribute 0.6.14
  13. 13. virtualenvで使う方法 virtualenv --distribute env でも面倒なので、 環境変数でいつでもdistributeを使うように変更 export VIRTUALENV_USE_DISTRIBUTE=1 virtualenv env virtualenvwrapperでも有効
  14. 14. distributeを使ったパッケージ開発 テストする $ python setup.py test 登録して $ python setup.py register ソースディストリビューションをアップロード $ python setup.py sdist upload ドキュメントをアップロード $ python setup.py build_sphinx $ python setup.py upload_docs
  15. 15. テスト setup.py で、 setupのキーワード引数test_suite で、テストを指定す る。 setup.py test で、テスト実行。 test_suite で パッケージ("bp.bucho"など)を指定すると、 そのパッケージ以下の test_* なパッケージを再帰的に探して、 TestCaseを実行する。
  16. 16. register  PyPIにディストリビューションのメタデータを登録する。 メタデータの項目は以下のとおり(PEP241) Metadata-Version Name Version Platform Summary Description Keywords Home-Page Author Author-email License
  17. 17. upload PyPIにディストリビューションをアップロードする。 アップロード前にregisterしておく必要あり。
  18. 18. upload_docs http://package.python.org/{ディストリビューション} というURLにドキュメントをアップロードする。
  19. 19. プラッガブルな仕組み setupのentry_pointsでモジュールを指定。 実行時にpkg_resourcesでロードする。 setup(name="bar",     ....     entry_points="""     [bp.sample.command]     barcommand = bar.commands:main pkg_resources.get_entry_map("bar", "bp.sample.command")
  20. 20. setup.py のコマンドを追加する entry_pointsで、distutils.commands を追加するだけでOK setup(     name="fuga",     ...     entry_points="""     [distutils.commands]     setup_fuga=fuga.commands:fugafuga     """, ) python setup.py setup_fuga と使えるようになる。
  21. 21. install_requires, tests_require, extra_require 依存するディストリビューションを書く pipやeasy_installなどのインストーラは、 インストール時に依存するディストリビューションも取得してくれる。
  22. 22. extras_requireについて setup(     name="hogehoge",     ...     extras_require={         "openid":[              "python-openid",         ],     }, )
  23. 23. extras_require このときは、python-openidへの依存を追いかけない easy_install hogehoge extraを指定してインストールするときは、そのextraの依存を追いか ける。 以下の場合は、python-openidへの依存を追いかける easy_install hogehoge[openid] pipでは使えないよ><
  24. 24. console_scripts distutilsのscriptsと違い、Windowsの場合は exe ファイルのラッパー まで生成してくれる。 distutilsのscriptsは、実行権限をつけて、 $prefix/bin にコピーする だけ。
  25. 25. 参考 Installing Python Modules Distributing Python Modules PEP 241 -- Metadata for Python Software Packages Distribute Document

×