Python 3のパッケージをインストールするためのpipまたはpip3?


119

OS X El Captainを搭載したMacbookを持っています。Python 2.7プレインストールされていると思います。しかし、私もインストールしPython 3.5ました。を使い始めたときPython 3、パッケージをインストールする場合は次のように入力する必要があることを読みました。

pip3 install some_package

とにかく、今私が使うとき

pip install some_package

some_packageインストールされPython 3ます。インポートして問題なく使用できるということです。私はちょうど入力したときにまた、pip3Terminal、私は使用方法については、このメッセージが表示されました:

Usage:   
  pip <command> [options]

これは、入力しただけのメッセージと同じですpip

以前のバージョンでは、物事が異なっていて、現在pippip3互換的に使用できるということですか?もしそうなら、そして議論のためPython 2に、の代わりにどのようにパッケージをインストールできますPython 3か?

回答:


73

あなたは、pip同じ実行ファイルのパスへのソフトリンクですpip3。以下のコマンドを使用してpippip3実際のパスがどこにあるかを確認できます。

$ ls -l `which pip`
$ ls -l `which pip3`

以下のコマンドを使用して、詳細を確認することもできます。

$ pip show pip
$ pip3 show pip

異なるバージョンのpythonをインストールすると、次のようなソフトリンクが作成される場合があります。

  • デフォルトのピップをいくつかのバージョンに設定します。
  • バージョンごとに異なるリンクを作成します。

これは、同じような状況でpythonpython2python3

さまざまなケースでどのように発生するかに興味がある場合は、以下の詳細情報をご覧ください。


1
これは間違っていると思います。私のpip3も、ヘルプ出力でそれ自体を単にpipと呼んでいますが、プレーンなpipはシステムにPython 2パッケージをインストールします。私はstackoverflow.com/a/40832677/188108が正しいと思います、少なくともそれは私の観察と一致しています。
Torsten Bronger、

どの環境でどのようにpythonをインストールするかによって変わります。この答えは、pipがどのように機能するかを知る手がかりを与え、質問者の状況に答えることです。システム上で同じでない場合でも、同じ方法で理由を調べることができます。それが間違った答えであるという意味ではありません。
CSJ

1
私はそれを疑います。私はMacを持っていませんが、テストしたUbuntuフレーバーでは、pipバリアントはシンボリックリンクではありません。代わりに、それらはシバン行のみが異なる小さなPythonスクリプトです。
Torsten Bronger

ええ、それは私がそれが環境とpython(brew、apt、pyenv、手動でコンパイルなど)をインストールする方法で変化することを意味しているものであり、質問者の状況にとって、それらはソフトリンクであり、私たちは使用しls -lpip showその理由を確認するためです。そしてもちろん、この答えは彼の質問に答えることです。
CSJ

質問者のコンピュータにシンボリックリンクがあったとは思いません。これまでにpipが機能した/機能したリファレンスは見つかりません。
Torsten Bronger、

26

python 2.xがあり、次にpython3をインストールした場合、pipはpip3を指しています。pip --versionwhichと入力することで確認できますpip3 --version

これで、システムにpip、pip2、pip3ができました

必要に応じて、pipをpip3ではなくpip2を指すように変更できます。


1
どのように変更しますか
ahnbizcad

3
@ahnbizcad最も簡単な方法は、次のようにエイリアスを定義することです:alias pip = "pip3"
apadana

2
私はこれを行いましたが、pipがv10のとき私のpip3はv9だったので、入力pip3 install --upgrade pipして両方をv10にしました
Kevin Danikowski

2
この答えは間違っています。pipはpip3を指しません。pipはPython 2パッケージをインストールし、pip3はPython 3パッケージをインストールします。Lubuntu 18.10でテスト済み。
Torsten Bronger、

@TorstenBrongerあなたの環境でのPythonのインストールの順序は何でしたか?
apadana

14

をインストールするとpython3pip3がインストールされます。(python2.7のような)別のpythonがインストールされていない場合は、を指すリンクが作成さpippip3ます。

それで、他のバージョンのpython(python3以外)がインストールされていない場合pipへのリンクpip3です。 pip通常、最初のインストールを指します。


7

これはトリッキーなテーマです。最後に、それを呼び出すpipと、システムの設定方法に応じて、pip2またはのいずれかが呼び出さpip3れます。


6

例として:

pip --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

pip3 --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

python --version
  Python 3.7.3

which python
  /usr/bin/python

ls -l '/usr/bin/python'
  lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3

which python3
  /usr/bin/python3

ls -l /usr/bin/python3
  lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7

ls -l /usr/bin/python3.7
  -rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7

したがって、私のデフォルトのシステムpython(Python 3.7.3)では、pip です pip3


5

私が思うにpippip2pip3同じ実行可能ファイルのパスへのソフトリンクではありません。このコマンドに注意してください。私のLinuxターミナルが表示されます。

mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

ご覧のとおり、それらは異なるパスに存在しています。

pip2はPython2と同様に、pip3は常にPython3環境でのみ動作します。pipは、コンテキストに適した環境で動作します。たとえば、Python3 venvを使用している場合、pipはPython3環境で動作します。


私は、pipがコンテキストに適した環境にリンクされていると言うのは少し誤解を招くと思います。venvの場合、pip実行可能ファイルはシステムではなくvenvに固有です。同じvenvに複数のバージョンのpythonをインストールしない限り、この問題が発生することはありません。venvを使用しない場合、使用されるpipのバージョンは直感的でない場合があり、システムの構成によって異なります(多くの場合、最初にインストールされたpythonのバージョンによって決定されます)。しかし、Pipにはバージョンを動的に選択するために使用するインテリジェンスがありません
Luke Baumann、2018年

3

Python 2.7をインストールした場合、次のように、Python 2専用のパッケージを使用pip2pip2.7てインストールできると思います。

pip2 install some_pacakge

または

pip2.7 install some_package

そして、あなたが使用することpip3pip3.5Pythonの3のために特別にpacakgesをインストールします。


1

私のWindowsインスタンスでは-私の環境を完全に理解していません-pip3を使用してkaggle-cliパッケージをインストールすると機能しましたが、pipは機能しませんでした。私はコンダ環境で作業していましたが、環境が異なっているようです。

(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip --version

C:\ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-packages(python 3.6)からのpip 9.0.1

(fastai)C:\ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip3 --version

c:\ users \ redact \ appdata \ local \ programs \ python \ python36 \ lib \ site-packagesからのpip 9.0.1(python 3.6)


0

somepath / venvでアクティブ化されたPython 3.6 virtualenvを指定すると、pipがAppleの2.7 Pythonを指すように主張したmacOS Sierraのさまざまな問題が次のエイリアスで解決されました。

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

sudo piprootユーザーが自分のエイリアスやvirtualenvについて何も知らないため、これを行う必要がある場合、これはうまく機能しなかったため、これを処理するためにエイリアスを追加する必要がありました。それはハックですが、うまくいき、私はそれが何をするか知っています:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

バックグラウンド:

開始する(コマンドが見つからない)pip3は存在せず、Apple Pythonである/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pipwhich pipを返します。

Python 3.6はmacports経由でインストールされました。

3.6 virtualenvをアクティブにした後、操作しwhich pythonたい場合、somepath / venv / bin / pythonが返されます

どういうわけpip installか、正しいことを実行して私のvirtualenvにヒットしますが、pip listPython 2.7パッケージをガラガラ鳴らします。

Pythonの場合、これは初心者にやさしいという点で私の期待をはるかに下回っています。

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