「python setup.py install」と「pip install」の違い


105

tarファイルからpython virtualenvにインストールする外部パッケージがあります。パッケージをインストールする最良の方法は何ですか?

私はそれを行うことができる2つの方法を発見しました:

  1. tarファイルをpython setup.py install抽出し、抽出したディレクトリ内で実行します。
  2. pip install packagename.tar.gzhttps://pip.pypa.io/en/stable/reference/pip_install/#examplesの例7から

これらの2つの方法でそれらを行うことに違いがあるかどうかです。


5
を使用しpipます。これでパッケージをアンインストールできます。
Blender 2013年

「VCSチェックアウト」のような「ソースから」、またはsdist

「最高」とは、要件によって異なります。これらのソリューションのいずれかを試してみて、何らかの方法で欠けていることを失敗しましたか?それとも、これらのアプローチの違い何ですか?
Martin Atkins

たとえばfedoraでは、を使用しyumます。
perreal 2013年

回答:


109

表面的には、どちらも同じことを行います。最小限の手間で、Pythonパッケージをインストールするかpython setup.py installpip install <PACKAGE-NAME>インストールします。

ただし、pipを使用すると、さらに使いやすくなるいくつかの利点があります。

  • pipは、パッケージのすべての依存関係を自動的にダウンロードします。対照的に、を使用する場合setup.py、手動で依存関係を検索してダウンロードする必要があり、これは面倒で面倒な場合があります。
  • ピップは、単一のコマンドで、あなた簡単にアンインストールやアップデートパッケージをすることができ、様々なメタデータを追跡します:pip uninstall <PACKAGE-NAME>pip install --upgrade <PACKAGE-NAME>。対照的に、を使用してパッケージをインストールする場合、パッケージをsetup.py削除するには、手動でパッケージを削除して維持する必要があり、エラーが発生する可能性があります。
  • ファイルを手動でダウンロードする必要はありません。を使用するsetup.py場合は、ライブラリのWebサイトにアクセスして、ダウンロード先を見つけ、ファイルを抽出して実行する必要がありsetup.pyます。対照的に、pipは自動的にPythonパッケージインデックス(PyPi)を検索し、そこにパッケージが存在するかどうかを確認します。パッケージが自動的にダウンロード、抽出、インストールされます。いくつかの例外はありますが、ほぼすべての本当に有用なPythonライブラリがPyPiにあります。
  • pipを使用すると、Pythonディストリビューションの新しい標準であるホイールを簡単にインストールできます。ホイールの詳細情報
  • pipには、の使用virtualenvとうまく統合できる追加の利点があります。これは、コンピューターで競合するライブラリとPythonバージョンを必要とする複数のプロジェクトを実行できるプログラムです。詳細情報
  • pipは、Python 2.xシリーズではPython 2.7.9以降、Python 3.xシリーズではPython 3.4.0以降、デフォルトでPythonにバンドルされており、さらに使いやすくなっています。

したがって、基本的には、pipを使用します。これは、を使用した場合に比べて改善されただけpython setup.py installです。


古いバージョンのPythonを使用していて、アップグレードできず、pipがインストールされていない場合は、次のリンクでpipのインストールの詳細を確認できます。

pip自体は、実際にはチュートリアルを必要としません。90%の確率で、本当に必要なコマンドはだけですpip install <PACKAGE-NAME>。とはいえ、pipで正確に何ができるかについての詳細を知りたい場合は、以下を参照してください。

また、pipとvirtualenvを一緒に使用することも一般的に推奨されています。あなたがPythonの初心者であれば、個人的には、pipとinstallパッケージをグローバルに使用することから始めても問題ないと思いますが、最終的には、より深刻なプロジェクトに取り組むときにvirtualenvの使用に移行する必要があると思います。

pipとvirtualenvを一緒に使用する方法の詳細については、以下を参照してください。


1
pip installは内部でsetup.pyファイルを呼び出しますか?
変数の

@variable、 "wheels"からのpipインストール、プリコンパイル済みパッケージ、しない、ソースからのpipインストール:dosを参照:pipインストールビルドシステムインターフェース
denis

私の経験python setup.py installでは、依存関係もダウンロードしてインストールします。2013年にこの回答を書いてからの変更ですか?
ケンウィリアムズ

19

python setup.py installmake installに似ています。これは、ファイルをコンパイルして宛先ディレクトリにコピーするための限られた方法です。これは、システムに実際にソフトウェアをインストールするための最良の方法であるとは限りません。

pip含むおなじみのパッケージマネージャのように、リストおよびアンインストールパッケージをインストール、アップグレードできるパッケージマネージャ、次のとおりです。dpkg, apt, yum, urpmi, portsなどのフードの下では、それが実行されますがpython setup.py install、しかし、特定のオプションを持つものがインストールされてしまう方法と場所を制御します。

要約すると、を使用しますpip


2

問題は、Pythonパッケージを含むローカルtarballインストールするための推奨される方法についてであり、PyPiのようなインデックスサービスにパッケージをアップロードする利点についてではありません

一部のソフトウェアディストリビューターがパッケージをPyPiにアップロードせず、開発者にWebサイトからパッケージをダウンロードしてインストールするように依頼していることを知っているためです。

python setup.py install

これは機能しますが、お勧めできません。setup.pyファイルを実行するためにtarballファイルを展開してそこに移動する必要はありません。

pip install ../path/to/packagename.tar.gz

これが設計され、推奨される方法です。簡潔でPyPiスタイルのパッケージに合わせます。

詳細についてpip installは、https//pip.readthedocs.io/en/stable/reference/pip_install/を参照してください。


pip install -eを使用できますか?
変数
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.