Pythonのパッケージ周りについて調べた時のメモ

用語

パッケージングツール

  • destribute : python標準のパッケージ管理用モジュール、destributeよりも多機能なsetuptoolsが基本的には使われる
  • setuptools : 2017年8月2日現在、すくなくともpython2系のパッケージング時のデファクトスタンダード
  • distutils : setuptoolsよりも機能が少ないので、setuptoolsを使っていればよい

インストールツール

  • easy_install : setuptoolsに付属している、PyPIからパッケージをダウンロードしてインストールできるコマンド
  • ez_setup.py : setuptoolsをインストールする際に利用されるスクリプト
  • pip : easy_installよりも高機能なインストーラー、easy_installではパッケージのアンインストール等ができない

配布形式

  • egg : setuptoolsで定義されたpython Packageの配布形式、中身はpythonのコードやメタ情報を所定のフォーマットでzip圧縮したもの
  • wheels : eggの後続のフォーマット

配布物の作成

  • bdist : setup.pyを使ってビルド済み配布物を作成するコマンド、bdist_rpmやbdist_wininst等を作成できる
  • sdist : setup.pyを使ってソースコード配布物を作成するコマンド

その他

  • setup.py : パッケージに必要な情報を記述する
  • init.py : pythonがあるディレクトリの目印
  • PyPI : the Python Package Index、Pythonのパッケージが登録されている場所

テンプレート

from setuptools import setup, find_packages
setup(
    name = "HelloWorld",
    version = "0.0.1",
    packages = find_packages(),
    #find_packages()はsetup.pyがあるディレクトリから__init__.pyがあるディレクトリを探す
    author = "repli",
    author_email = "repli@example.com",
    description = "This is an Example Package",
    license = "MIT", 
    keywords = "package example examples", # 検索用のワード
    url = "",   # もしあれば、プロジェクトのホームページ
    install_requires = ['docutils>=0.3'],
    #python以外に含めるデータ
    package_data = {
        '': ['*.txt', '*.rst'],
    }
)

ref