【Python】”pip install” と “python -m pip install” の違い

pip install と python -m pip installの違いの解説ページアイキャッチ

みなさん pip 使っていますか?

Python では pip が使えるのでパッケージ管理が非常に便利ですよね!

使いたいパッケージがあれば pipinstall すればすぐに使えるようになりますし、消す時も uninstall すれば良いだけなので楽です。

そんな pip ですが、pip の使い方には大きく分けて pip installpython -m pip install の2つが存在することはご存知でしょうか?

ウェブサイト等によっても、紹介される pip のコマンドは上記の2つでバラバラだと思います。この2つの pip の使い方にはどのような違いがあるのでしょうか?

このページでは、その「2つの pip の使い方」における違いについて解説していきたいと思います。

pip installpython -m pip install の違い

本質的には下記のどちらも行われることは同じで、要は pip モジュールが実行されて <Package> というパッケージのインストールが行われます。

  • pip install <Package>
  • python -m pip install <Package>

ただ、<Package> というパッケージがインストールされる点は同じですが、インストール先の Python のバージョンが異なる可能性があります。

パッケージは Python のバージョンごとに管理される

まず前提として、PC 内には複数のバージョンの Python をインストールすることが可能です。

さらに、pip でのパッケージのインストールは、それぞれのバージョンの Python に対して独立に行われます。

つまり、特定のバージョンの Python に <Package> というパッケージをインストールしたとしても、他のバージョンの Python ではその <Package> を使うことはできません。他のバージョンでも使用したいのであれば、そのバージョンの Python に対してもその <Package> をインストールする必要があります。

Pythonのバージョンごとにパッケージが管理されている様子

この、パッケージのインストール先の Python のバージョンが、pip installpython -m pip install を実行した場合とで異なる場合があります。

スポンサーリンク

インストール先の Python のバージョンが異なる(可能性がある)

では、なぜパッケージのインストール先の Python のバージョンが、pip installpython -m pip install を実行した場合とで異なる場合があるのでしょうか?

この点について解説していきます。

まず、複数のバージョンの Python がインストールされている場合、Python 本体だけでなく pip モジュールもバージョンごとに別々に存在することになります。

pipがPythonごとに存在する様子

そして、pip モジュールによるパッケージのインストール先は、その pip モジュールを持つバージョンの Python のみとなります。ですので、どの pip モジュールを利用してインストールを行うかによって、インストール先の Python が異なることになります。

使用するpipモジュールによってインストール先のPythonが異なる様子

さらに、下記の2つのコマンドでは、PC の設定によっては異なる pip モジュールが実行される可能性があります。すなわち、下記の2つのコマンドのどちらを利用するかによって、パッケージのインストール先の Python が変わってしまうことになります。

  • pip install <Package>
  • python -m pip install <Package>

pip installpip のバージョンの Python にインストールされる

まず、pip install <Package> で  <Package> のインストールを行なった場合、その <Package> は、pip コマンドで実行される pip モジュールを持つ Python にインストールされることになります。

もし、複数のバージョンの Python がインストールされている場合、pipモジュールに関しても複数存在することになりますが、pip コマンドで実行されるモジュールはそのうちのいずれかの1つのみです。

pipコマンドで実行されるpipモジュールを示す図

そして、pip install <Package> を実行した場合、その pip コマンドで実行される pip モジュールを持つバージョンの Python に対して <Package> がインストールされることになります。

pipコマンドでのパッケージのインストール先を示す図

pip コマンドで実行される pip モジュールがどのバージョンの Python のものなのかについては、下記の pip -V コマンドにより調べることができます。

下記の場合、pip コマンドで実行される pip モジュールは Python 3.9 のものであることになりますので、pip install <Package> を実行すれば Python 3.9 に対して <Package> がインストールされることになります。

% pip -V            
pip 21.3.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

以降では、pip コマンド時に実行される pip モジュールを持つ Python のバージョンを、単に pip のバージョンと呼ばせていただきます。

python -m pip installpython のバージョンの Python にインストールされる

それに対して、python -m pip install <Package> を実行した場合、<Package> は、python コマンドで実行されるバージョンの Python に対してインストールが行われることになります。

pythonコマンドでのパッケージのインストール先を示す図

要は python -m pip とは、python で実行されるバージョンの Python が持つ pip モジュールを実行するためのコマンドです。ですので、python コマンドで実行されるバージョンの Python に対してパッケージがインストールされることになります。

この python コマンドで実行される Python に関しては、下記の python -V コマンドにより調べることができます。下記の場合、python -m pip install <Package> を実行すれば、Python 3.10 に対して <Package> がインストールされるということですね!

% python -V        
Python 3.10.2

以降では、python コマンドで実行される Python のバージョンを、単に python のバージョンと呼ばせていただきます。

pippython のバージョンが異なる場合は注意

ここまでの解説の通り、実行される pip モジュールの違いによって、パッケージのインストール先の Python のバージョンが異なります。

pip のバージョンと python バージョンとが同じであれば、異なるコマンドではあるものの、下記の2つで得られる結果は同じものになります。

  • pip install <Package>
  • python -m pip install <Package>

ただし、pip と python のバージョンが異なるのであれば、2つのコマンドでインストール先の Python のバージョンが異なってしまうことになります。

2つのコマンドでのインストール先の違い

このような場合、例えば pip install でインストールしたパッケージを Python スクリプトの中から使用し、その Python スクリプトを python コマンドで実行しようとすると、下記のようなエラーが発生することになります。これは、python コマンドで実行される Python と、pip でパッケージがインストールされる Python のバージョンが異なるからです。

ModuleNotFoundError: No module named 'パッケージ'

もちろん、pip コマンドと python コマンドで実行される Python のバージョンが統一されていれば pip installpython -m pip install の両方で同じ pip モジュールが実行されるので問題はありません。そもそも pip コマンドと python コマンドで実行される Python のバージョンは同じであることの方が多いはずです。

ただし、もし異なる場合は、各コマンドによるパッケージのインストール先の Python のバージョンをしっかり意識してコマンドを利用する必要があります。

python -m pip install の方が無難

いずれにせよ、パッケージのインストールを行う際のコマンドは python -m pip install に統一する方が無難だと思います。

Python スクリプトを実行する際にも、python xxx.py のように python コマンドを実行すると思いますが、python -m pip install でパッケージのインストールを行うことで、パッケージのインストール先をスクリプト実行時に使用しているバージョンの Python に統一することができます(python xxx.py でも python -m pip install でも同じバージョンの Python が使用される)。

その結果、パッケージのインストール先の Python と、python コマンド実行時に実行される Python の不整合を防ぐことができます。

逆に pip install でパッケージのインストールを行なった場合、python コマンド実行時に使用される Python のバージョンのものとは異なるバージョンに対してインストールが行われ、結局 Python スクリプトを実行する際にインストールしたパッケージが使用できないようなことが起こり得ます。

なので、パッケージのインストールを行う際には python -m pip install を利用する方が無難だと思います。

ちなみに、pip の公式ドキュメントでも python -m pip install の方が使用されています。

https://pip.pypa.io/en/stable/

また、ここまで Python を実行するコマンドを python で表記してきましたが、もしあなたが Python スクリプトを実行する際に python3python3.10 など、python にバージョン名を付加したコマンドを使用しているのであれば、パッケージインストール時にもそのコマンドを利用した方が良いです。

例えば、私は python3.10 test.py などのように、Python スクリプトを実行する際には python3.10 コマンドを実行するようにしています。なので、パッケージインストール時にも python3.10 -m pip install を実行するようにしています。

python3.10 -m pip install

また、uninstall 等を行う際も同様で、pip を介してパッケージ管理を行う際には、python -m pip xxx の方のコマンドを利用する方が良いと思います。

さらに言えば、バージョンの異なる Python を別々のパッケージ構成で利用したいような場合も python -m pip xxx の方のコマンドを使用するのが便利だと思います。

python の部分をバージョンに応じて変更することで、Python のバージョンごとのパッケージのインストールの制御を簡単に行うことができます。

例えば python 3.8 にのみ <Package1> というパッケージをインストールし、Python 3.9 にのみ <Package2> というパッケージをインストールして Python を利用したいような場合、下記を実行すれば良いことになります。

% python3.8 -m pip install <Package1>
% python3.9 -m pip install <Package2>

もちろん仮想環境などを利用して Python をバージョンごとに管理するような手段もありますが、いずれにしても下記コマンドの違いは理解しておくと、今後役にたつと思います。

  • pip install <Package>
  • python -m pip install <Package>

スポンサーリンク

まとめ

このページでは、下記の2つのコマンドの違いについて解説しました!

  • pip install <Package>
  • python -m pip install <Package>

両方 pip モジュールが実行されてインストールが行われるという点に違いはありませんが、実行される pip モジュールの違いにより、2つのコマンドでパッケージのインストール先の Python のバージョンが異なる可能性があります。

特に複数バージョンの Python を PC 内にインストールしている場合、どのバージョンにパッケージをインストールするかをコントロールしながら Python を利用していく必要があり、そんな時には、後者の python -m pip install <Package> の方が便利だと思います(python の部分は使用する Python に合わせて適宜変更してください)。

いずれにしても、pip を利用する際は python -m pip install <Package> コマンドを実行する方が無難だと思います!

同じカテゴリのページ一覧を表示