Distutil setuptools distribute

4,223 views

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,223
On SlideShare
0
From Embeds
0
Number of Embeds
915
Actions
Shares
0
Downloads
11
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Distutil setuptools distribute

  1. 1. setup.pydistutils/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 setupsetup(name="bp.bucho", version="0.1")
  6. 6. パッケージメタデータMetadata-Version: 1.0Name: bp.buchoVersion: 0.1Summary: UNKNOWNHome-page: UNKNOWNAuthor: UNKNOWNAuthor-email: UNKNOWNLicense: UNKNOWNDescription: UNKNOWNPlatform: UNKNOWN
  7. 7. from distutils.core import setupsetup(    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.0Name: bp.buchoVersion: 0.1Summary: bucho shows thingsHome-page: http://beproud.jpAuthor: Atsushi OdagiriAuthor-email: aodagx@gmail.comLicense: MITDescription: bp.bucho        ====================                bp.bucho is a sample package distribution.        Platform: UNKNOWN
  9. 9. setup.pyを実行buildPythonモジュールのコンパイルや、C拡張のコンパイルなどinstall指定ディレクトリ(通常はsite-packages)以下にインストール大正のパッケージをコピーsdistソースディストリビューションを作成bdist_wininstwindows向けインストーラ付きのディストリビューションを作成
  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 --versiondistribute 0.6.14
  13. 13. virtualenvで使う方法virtualenv --distribute envでも面倒なので、環境変数でいつでもdistributeを使うように変更export VIRTUALENV_USE_DISTRIBUTE=1virtualenv envvirtualenvwrapperでも有効
  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. uploadPyPIにディストリビューションをアップロードする。アップロード前にregisterしておく必要あり。
  18. 18. upload_docshttp://package.python.org/{ディストリビューション}というURLにドキュメントをアップロードする。
  19. 19. プラッガブルな仕組みsetupのentry_pointsでモジュールを指定。実行時にpkg_resourcesでロードする。setup(name="bar",    ....    entry_points="""    [bp.sample.command]    barcommand = bar.commands:mainpkg_resources.get_entry_map("bar", "bp.sample.command")
  20. 20. setup.py のコマンドを追加するentry_pointsで、distutils.commands を追加するだけでOKsetup(    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 hogehogeextraを指定してインストールするときは、そのextraの依存を追いかける。以下の場合は、python-openidへの依存を追いかけるeasy_install hogehoge[openid]pipでは使えないよ><
  24. 24. console_scriptsdistutilsのscriptsと違い、Windowsの場合は exe ファイルのラッパーまで生成してくれる。distutilsのscriptsは、実行権限をつけて、 $prefix/bin にコピーするだけ。
  25. 25. 参考Installing Python ModulesDistributing Python ModulesPEP 241 -- Metadata for Python Software PackagesDistribute Document

×