apt-getインストールとpipインストール


103

Pythonパッケージをダウンロードするときに上記のコマンドを使用する必要がある場合について、少し混乱しています。私はこの質問の答えに従ってpyudevという名前のパッケージをダウンロードしようとしていました。私はこのコマンドを実行しました:

sudo pip install python-pyudev

しかし、次のメッセージを受け取りました:

Downloading/unpacking python-pyudev

  Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log

しかし、以下はうまくいきました:

sudo apt-get install python-pyudev

ときにされたapt-getパッケージをインストールするために使用されることになって、いつれるpython-pip使用?


2
pipPythonパッケージのみをインストールするために使用されますがapt-get、すべてのパッケージをインストールするために使用されます。
アビナッシュラジ14年

3
ok..soなぜpipはpython-pyudevをインストールできなかったのですか?
ビネトカウシク14

回答:


100

PyPIはPythonパッケージインデックス— Pythonモジュールのリポジトリです。

pipPyPIから直接パッケージをダウンロードしてインストールするために使用されます。PyPIはPython Software Foundationによってホストされています。Pythonパッケージのみを扱う専用のパッケージマネージャーです。

apt-get CanonicalがホストするUbuntuリポジトリからパッケージをダウンロードおよびインストールするために使用されます。

以下からのpythonパッケージのインストールの違いの一部apt-getとは、pip次のとおりです。

  • Canonicalは、選択したPythonモジュールのパッケージのみを提供します。一方、PyPIはより広範囲のpythonモジュールをホストします。そのため、を使用してインストールできないPythonモジュールが多数ありますapt-get

  • Canonicalは、すべてのパッケージの単一バージョン(通常は最新のものまたは最近リリースされたもの)のみをホストします。したがって、apt-get必要なpython-packageのバージョンを決定することはできません。pipこの状況で私たちを助けます。以前にPyPIにアップロードされたパッケージの任意のバージョンをインストールできます。これは、依存関係が競合する場合に非常に役立ちます。

  • apt-getPythonモジュールをシステム全体の場所にインストールします。プロジェクトvirtualenvにモジュールをインストールすることはできません。pipこの問題を解決します。pipvirtualenvをアクティブ化した後に使用している場合、プロジェクトvirtualenvにモジュールをインストールするだけで十分です。前のポイントで述べたように、特定のpythonパッケージのバージョンがシステム全体の場所に既にインストールされており、プロジェクトの1つが同じpythonパッケージの古いバージョンを必要とする場合、そのような状況ではvirtualenvとpipを使用してインストールできます競合のない古いバージョンのpythonパッケージ。

  • 以下のよう@RaduRădeanuが指摘この回答では、一般的にだけでなく、パッケージの名前に差があるでしょう。Canonicalは通常、Python 2パッケージをとしてpython-<package_name>、Python 3パッケージをという名前にしますpython3-<package_name>。一方、pip通常<package_name>はPython 2パッケージとPython3パッケージの両方で使用する必要があります。

どちらを使用する必要があります:

どちらapt-getpipインストール中に自動的に他のパッケージの依存関係をインストールし、成熟したパッケージマネージャです。誰でも好きなように使用できます。ただし、特定のバージョンのpython-packageをインストールする必要がある場合、virtualenvにパッケージをインストールする場合、またはPyPIでのみホストされているパッケージをインストールする場合は、pipその問題の解決に役立つだけです。あなたはシステム全体の場所にパッケージをインストールする気にしない場合に使用するかどうかそうでなければ、それは本当に問題ではありませんapt-getpip


5
また、両方または同時にではなく、どちらか一方を使用するようにpipしてapt-getください。
earthmeLon

3
遅かれ早かれ、によって提供されないパッケージまたはそのバージョンが必要になる場合がありますapt-getapt-getとの両方を使用pipすると競合が発生する可能性があるため、pipサポート対象のパッケージには常に使用することをお勧めしますpipか?
アビシェークアナンド

2
@Abhishek、私の好ましい方法は、はい、私はaptの上ピップを使用することを好む..常にvirtualenvの通過のPythonを使用することです..だから
アーディティヤ

これは、特定のシナリオで独自のワームの缶を開きます。ほとんどのプロジェクトが同じ環境を必要としていたため、ほとんどのパッケージをインストールsudo pipせずにインストールしたとしましょうvirtualenv(ただし、Ubuntuのクリーンインストールで提供されるものよりも広範囲です)。その後、システムのアップグレードを行い、UbuntuがPythonを新しいバージョンにアップグレードすることを決定した場合(zestyto artful-Python 3.5から3.6など)、pipでインストールされたパッケージは/usrすべて残されpip.get_installed_distributions()、空のリストが作成されます。
z33k

グローバルコンテキストでのpipの使用は、システムのPythonインストールを台無しにするため、明らかに間違っており、使用しないでください。pipとapt-getは完全に異なるものであり、それらを比較するのは間違っています。他の非Pythonライブラリに依存するPythonモジュールをインストールしようとすると、apt-getが必要な理由がすぐにわかります。
メスティア

21

@AvinashRajがコメントで述べたようにpip Pythonパッケージのインストールにのみapt-get使用されますが、任意のプログラミング言語で作成されたパッケージのインストールに使用されます。

主な問題は、両方の場合に適切なパッケージ名を見つけることです。

pip search pyudev

を使用してpip install、インストールするパッケージに適切な名前を付けます。

apt-cache search pyudev

を使用して、インストールするパッケージの正しい名前を指定しますapt-get install

radu@Radu: ~ $ pip search pyudev
pyudev                    - A libudev binding
radu@Radu: ~ $ apt-cache search pyudev
python-pyudev - Python bindings for libudev
python3-pyudev - Python3 bindings for libudev

したがって、結論として、の特派員はでsudo apt-get install python-pyudevありsudo pip install pyudev、ではありませんsudo pip install python-pyudev

pythonパッケージをインストールするときに、何を選択するかに依存します:pipまたはapt-get。たとえばpipとを使用したパッケージのインストールの違いに関するこのQ&Aを参照してくださいapt-get


2

私が好む方法は、常に使用することでaptあり、使用するDebian / Ubuntuリポジトリでモジュールがまだ利用できない場合にpipのみ、ユーザーコンテキスト- --userフラグでのみです。pipとにかくいずれかを使用することにより、たとえばUbuntuのリポジトリからすべてのビルド依存関係をインストールするか、それらを提供する必要があり、退屈な作業になる可能性があります。ダウンロード後にapt-getバイナリパッケージをpipビルドしながらインストールします。pipを使用してモジュールをシステムロケーションにインストールしないでください。これは明らかに間違っています。常に--userフラグを使用して、モジュールをホームロケーションにインストールします。適切に構成されたPYTHONPATHを使用すると、Pythonで最初にHOMEからモジュールを選択し、次にでインストールしたシステムモジュールを選択できますapt-get

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