推奨ツール

Page Status:Complete
Last Reviewed:2016-06-24

Python パッケージングとインストールについてはよく知っていて、単に現在どのツールが推奨されているか知りたいだけなら、ここにその情報がある。

推奨インストールツール

  • PyPI から Python パッケージ をインストールするには、 pip を使う。[1] [2] pip のインストール方法によっては、wheel キャッシュを利用するために wheel もインストールする必要があるかもしれない。[3]
  • 共用の Python 環境からアプリケーション固有の依存関係を隔離するには、 virtualenv または venv を使う。[4]
  • 完全に統合されたクロスプラットフォームなソフトウェアスタック管理システムが欲しければ、以下を検討せよ:
    • buildout: 主に Web 開発コミュニティ向け。
    • Spack, Hashdist, または conda: 主に科学コミュニティ向け。

推奨パッケージングツール


[1]場合によっては、 easy_install (setuptools に含まれる) を選ぶことになるかもしれない。例えば、(pip がサポートしない) Eggs からインストールする必要がある場合だ。詳しい解説は pip vs easy_install を見よ。
[2]PEP 453 が accept されたので、Python 3.4 以降のほとんどの環境で pip がデフォルトで利用できる。pip が選ばれた理由については、PEP 453rationale セクション を見よ。
[3]get-pip.pyvirtualenvwheel をインストールするが、ensurepipvenv は今のところそうではない。また、各種 Linux ディストリビューションでよく見られる “python-pip” パッケージは今のところ “python-wheel” に依存していない。
[4]Python 3.4 以降、 venvpip がインストールされた仮想環境を作るので、virtualenv と同等になる。ただし、バージョン間の一貫性が必要なユーザには virtualenv の使用を勧める。
[5]

distutils のみを使うことは多くのプロジェクトでは可能だが、これは他のプロジェクトへの依存関係の定義をサポートしておらず、また配布物のメタデータを自動で設定するために setuptools が提供するいくつかの便利なユーティリティを欠いている。 setuptools は標準ライブラリの外部にあるので、Python の異なるバージョン間でより一貫した仕様を提供できる。また、 (distutils と異なり) setuptools はサポートする全てのバージョンで今後の “Metadata 2.0” 標準フォーマットを生成するように更新される。

distutils を選択したプロジェクトであっても、pip がそのプロジェクトを(事前ビルドされた wheel ファイルからではなく)ソースから直接インストールする場合、実際には setuptools を使ってビルドされる。

[6]distribute (setuptools のフォーク)は 2013 年 6 月に setuptools へマージされたので、setuptools がパッケージングのデフォルトの選択肢となった。
[7]PyPI は今のところ Windows および Mac OS X 用の wheels のみを受理しており、またそれらは python.org で提供されるバイナリインストーラと互換であるべきとされる。wheel compatibility tagging scheme が改善されるまで、Linux 用 wheels は受理されない。