Python パッケージ管理のさまざまな方法の違い
私はしばらく Python を学習していますが、さまざまなパッケージ (時には setup.py、時には easy_install、時には pip、そして distutils などの概念) をインストールするという問題によく遭遇します。 setuptools など、誰がいつ何を使用すればよいのかわかりません。今日はこれらの概念を明確にします。
distutils
distutils は Python 標準ライブラリの一部であり、その本来の目的は、開発者に便利なパッケージ化方法を提供し、ユーザーに便利なインストール方法を提供することです。
たとえば、foo.py ファイルを含む foo という名前のパッケージを作成し、他の人がそれを使用できるようにパッケージ化したいとします。 現時点では、setup.py ファイルを作成する必要があります:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
))
次にコマンド
$python setup.py sdist
を実行すると、現在のディレクトリに dist という名前のフォルダーが見つかります。このフォルダーには foo-1.0.tar.gz パッケージが含まれています。 このパッケージには、foo.py、setup.py、PKG-INFO の 3 つのファイルがあります。最初の 2 つのファイルは、前に説明した 2 つのファイルと同じです。 PKG-INFO はパッケージに関する情報です。その後、他の人のために foo-1.0.tar.gz をインストールできます。
インストーラーがこのパッケージを使用したい場合は、foo-1.0.tar.gz ファイルを解凍し、コマンド
$python setup install
を実行するだけで済みます。パッケージは、上の適切な場所に自動的にインストールされます。システム。
setuptools
setuptools は distutils の機能拡張であり、特にパッケージ依存関係管理の導入です。
setuptools は、Python パッケージの Egg ファイルを作成できます。Python と Egg ファイルの関係は、Java パッケージと jar パッケージの関係に相当します。
setuptools が提供する easy_install スクリプトを使用して、egg パッケージをインストールできます。 さらに、easy_install は、PyPI から関連パッケージを自動的にダウンロードし、インストールとアップグレードを完了できます。
easy_install は、次のような Python パッケージをインストールおよびアップグレードするためのさまざまな方法を提供します。
easy_install SQLObject
easy_install -f http://pythonpaste.org/package_index.html SQLObject
easy_install http://example.com/ path /to/MyPackage-1.2.3.tgz
easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
easy_install --upgrade PyProtocols
その後、開発者は setuptools の開発が遅すぎると感じ、フォークしました。 Distribute プロジェクトは Distribute プロジェクトにマージされ、その後 2013 年 8 月に Distribute は setuptools 0.7 にマージされて戻りました。
pip
pip は、Python パッケージをインストールおよび管理するためのツールです。これは easy_install の機能強化です。 PyPI からパッケージを自動的にダウンロードしてインストールすることもできます。
pip では、
必要なパッケージはすべてインストール前にダウンロードする必要があるため、ある部分がインストールされ、他の部分がインストールされないという状況は発生しません
インストールされたすべてのパッケージが追跡されるため、その理由を知ることができます。インストールとアンインストールが同時に行われます。
卵ファイルを使用する必要はありません。
使い方は簡単:
pkg_name をインストール
pkg_name をアンインストールする