wheel
目次

wheel

  • wheel: ビルド済みの C 拡張や Python パッケージのみを含み、ファイルを展開するだけでインストールが完了する

    • Python の公式バイナリパッケージは wheel 形式 (PEP491)

    • pip コマンドは、 wheel 形式を優先して利用する

    • pip は、 PyPI にアップロードされている wheel 形式のパッケージを直接インストールできる

      $ pip install django==1.11.15
      
    • https://pythonwheels.com/ : 定番パッケージの wheel 配布状況を確認できる

  • sdist : パッケージのソース、メタデータ、ビルド方法などをアーカイブしたソース配布形式

    • インストールのたびに各環境でアーカイブに同梱される setup スクリプトを読み込み、 C 拡張があればビルドし、必要があれば Python パッケージを確認して、 site-packages へコピーする

インストール

$ pip install wheel

wheel の作り方

PyPI で sdist で配布されているパッケージを wheel 形式のパッケージに変換してローカルに保存する

# wheelhouse ディレクトリに wheel 形式パッケージを作成する
$ pip wheel markupsafe -w wheelhouse
  • wheelhouse ディレクトリがなくても、 -w wheelhouse を指定すると勝手に作ってくれる

  • wheel 形式のパッケージの保存ディレクトリ名は何でもよいが、慣習的に wheelhouse という名前を使う

setuptools ベースのプロジェクトから wheel を作成する

$ python setup.py bdist_wheel
  • Python のパッケージングには setup スクリプトが必要 (PyPro3 P.66)

    • setup.py というファイル名で用意する (Python の仕様で決められている)

    • setup.py には Python パッケージ情報 (メタデータ: パッケージ名やバージョン, 依存パッケージなど) を書く

  • setuptools は pip が使える環境には必ずインストールされているライブラリ

    • 一般的には setuptools が提供する機能拡張された setup 関数を使う

    # 詳しくは PyPro P.70 を見よ
    from setuptools import find_packages, setup
    
    
    setup(
        name="hey",
        version='1.2.3',
        packages=find_packages(),
        include_package_data=True,
        install_requires=['Django>=2.1'],
    )
    

ガイド/リファレンス