Pythonのpipコマンドとは
pythonで使用するpipの正式名称は「Pip Installs Packages」または「Pip Installs Python」で、Pythonモジュールやパッケージのインストールや管理などを行うユーティリティになります。
Python 3.4以降では標準で付属しており、パッケージのインストールは、pip の install コマンドで行います。 パッケージには公式が配布しているものと、サードパーティが配布しているものがあり、公式が配布しているものはPythonをインストールする際に自動的にインストールされます。 
サードパーティが配布しているものは、必要に応じて個別にインストールしますが、このサードパーティのパッケージをインストールする時に使用するのがpipになります。
pip -V, –version バージョンの確認
pip -V、又はpip –versionを実行するとpipのバージョンを確認する事が出来ます。pip -Vの場合の「V」は大文字であることに注意です。
pip -V
又は
pip --version下記のようにどちらのコマンドでも、同じ結果が表示されます。
PS C:\Users\kshim> pip -V
pip 21.2.4 from C:\Users\kshim\anaconda3\lib\site-packages\pip (python 3.9)PS C:\Users\kshim> pip --version
pip 21.2.4 from C:\Users\kshim\anaconda3\lib\site-packages\pip (python 3.9)pip -v コマンドやオプションの一覧
pip -vを実行するとpipコマンドの種類やpipコマンドのオプションの一覧を確認する事が出来ます。pip -vの「v」は小文字であることに注意です。
pip -v下記のように表示されます。
PS C:\Users\kshim> pip -v
Usage:
  pip <command> [options]
Commands:
  install                     Install packages.
  download                    Download packages.
  uninstall                   Uninstall packages.
  freeze                      Output installed packages in requirements format.
  list                        List installed packages.
  show                        Show information about installed packages.
  check                       Verify installed packages have compatible dependencies.
  config                      Manage local and global configuration.
  search                      Search PyPI for packages.
  (以後略)pip check モジュールの依存関係の確認
pip checkを実行すると、インストール済みのモジュールの依存関係を確認する事ができます。 問題がない場合は、「No broken requirements found.」が表示されます。
不足するモジュールがある場合は、そのメッセージが表示されます。 依存関係とは、”このパッケージを使用する時は別のパッケージが必要ですよ”、というパッケージ同士の関係です
pip check実行すると次の様なメッセージが表示されました。私の場合はいろいろ足りないみたいですね・・・。この例の2行目では、「spyder 5.1.5」というパッケージには「pyqt5」というパッケージが必要なのですが、それがインストールされていない事を伝えています。
PS C:\Users\kshim> pip check
spyder 5.1.5 requires pyqt5, which is not installed.
spyder 5.1.5 requires pyqtwebengine, which is not installed.
conda-repo-cli 1.0.4 requires pathlib, which is not installed.
anaconda-project 0.10.2 requires ruamel-yaml, which is not installed.pip list パッケージやバージョンの確認
pip list
pip listを実行すると、インストール済みのパッケージやバージョン情報を確認する事ができます。パッケージ名とバージョン情報が表示されます。
pip list下記はpip listを実行したときの例でインストールされているパッケージが表示されます。 先頭部分の一部を記載していますが、実際は何十個のパッケージが表示されたと思います。 左側にインストールされているパッケージ名、右側にバージョン情報が表示されます。
PS C:\Users\kshim> pip list
Package                       Version
----------------------------- ----------------
aiohttp                       3.8.1
aiosignal                     1.2.0
alabaster                     0.7.12
anaconda-client               1.9.0pip list –format columns
pip listでは–formatオプションで出力フォーマットを変更できます。formatには、columns, freeze, jsonが指定できます。
pip list --format columnspip list –format columnsを実行すると下記のように表示されます。pip listと同じ結果になります。
PS C:\Users\kshim> pip list --format columns
Package                       Version
----------------------------- ----------------
aiohttp                       3.8.1
aiosignal                     1.2.0
alabaster                     0.7.12
anaconda-client               1.9.0pip list –format freeze
パッケージ名==バージョン情報の形式で出力するにはformatにfreezeを指定します。
pip list --format freezepip list –format freezeを実行すると下記のように表示されます。この結果はpip freezeを実行した時も同じになります。
PS C:\Users\kshim> pip list --format freeze
aiohttp==3.8.1
aiosignal==1.2.0
alabaster==0.7.12
anaconda-client==1.9.0pip list –format json
パッケージ情報を他で使用するためにjson形式での出力が可能です。formatにjsonを指定します。
pip list --format jsonpip list –format jsonを実行すると下記のよう表示されます。
PS C:\Users\kshim> pip list --format json
[{"name": "aiohttp", "version": "3.8.1"}, {"name": "aiosignal", "version": "1.2.0"}, {"name": "alabaster", "version": "0.7.12"}, {"namtoe": "anaconda-client", "version": "1.9.0"}, ・・・・pip list -u, –uptodate
pip listに-uまたは–uptodateオプション指定すると、最新版になっているパッケージのみを表示させることが出来ます。
pip list -u
又は
pip list --uptodatepip list -u、もしくはpip list –uptodateを実行すると下記のように表示されます。
PS C:\Users\kshim> pip list -u
Package                       Version
----------------------------- -----------
appdirs                       1.4.4
argon2-cffi                   21.3.0
argon2-cffi-bindings          21.2.0
async-generator               1.10PS C:\Users\kshim> pip list --uptodate
Package                       Version
----------------------------- -----------
appdirs                       1.4.4
argon2-cffi                   21.3.0
argon2-cffi-bindings          21.2.0
async-generator               1.10pip list -o, –outdated
pip listに-oまたは–outdatedオプション指定すると、最新版になっていないパッケージのみを表示させることが出来ます。
pip list -o
又は
pip list --outdatedpip list -o、もしくはpip list –outdatedを実行すると下記のように表示されます。
PS C:\Users\kshim> pip list -o
Package                  Version          Latest          Type
------------------------ ---------------- --------------- -----
aiohttp                  3.8.1            3.8.4           wheel
aiosignal                1.2.0            1.3.1           wheel
alabaster                0.7.12           0.7.13          wheelPS C:\Users\kshim> pip list --outdated
Package                  Version          Latest          Type
------------------------ ---------------- --------------- -----
aiohttp                  3.8.1            3.8.4           wheel
aiosignal                1.2.0            1.3.1           wheel
alabaster                0.7.12           0.7.13          wheelpip list –not-required
pip listに–not-requiredオプション指定すると、他のパッケージと依存関係のないパッケージのみを表示させることが出来ます。
pip list --not-requiredpip list –not-requiredを実行すると下記のように表示されます
PS C:\Users\kshim> pip list --not-required
Package                Version
---------------------- ----------------
aiohttp                3.8.1
anaconda-navigator     2.1.4
anaconda-project       0.10.2pip freeze パッケージやバージョンの確認・出力
pip freeze
pythonのアプリケーションを複数人で開発する時は、pythonのパッケージ環境を共有する必要があります。 一つ一つパッケージをインストールする事も可能なのですが、パッケージ情報をファイルに出力や取込が出来れば、より簡単に環境を共有する事ができます。
 pip freezeを使用すると、パッケージ情報をファイル出力する事ができます。
pip freezepip freezeを実行すると下記のように表示されます
PS C:\Users\kshim> pip freeze
aiohttp==3.8.1
aiosignal==1.2.0
alabaster==0.7.12
anyio==3.5.0pip freezeを実行すると、本来なら上記のように「パッケージ名==バージョン情報」が表示されるはずが、下記のように「パッケージ名 @ file://・・・」と混在して表示される場合があります。
PS C:\Users\kshim> pip freeze
aiohttp @ file:///C:/ci/aiohttp_1646788390724/work
aiosignal @ file:///tmp/build/80754af9/aiosignal_1637843061372/work
alabaster @ file:///home/ktietz/src/ci/alabaster_1611921544520/work
anaconda-client @ file:///C:/ci/anaconda-client_1635324559101/work
anaconda-navigator==2.1.4
appdirs==1.4.4@fileが表示される明確な原因はわかりませんが、WindowsでAnacondaを使っているとこのような表示になることが多いようですが、Anacondaを使用していない場合でも、このような表示になる場合があるみたいです。
pip list –format freezeを実行すればpip freezeと同じ結果なので、@ file://・・・の表示になる場合は、別の方法としてpip list –format freezeを使用しましょう。
pip freeze > requirements.txt
pythonのパッケージ環境をファイル出力するには、pip freeze > requirements.txtを実行します。「requirements.txt」のファイルが生成されます。
pip freeze > requirements.txtファイルを確認すると、パッケージ名とバージョン情報が記載されています。
aiohttp==3.8.1
aiosignal==1.2.0
alabaster==0.7.12
anaconda-client==1.9.0
anaconda-navigator==2.1.4
anaconda-project==0.10.2pip freeze > requirements.txtを実行すると、本来なら上記のように「パッケージ名==バージョン情報」が記録されるはずが、「パッケージ名 @ file://・・・」と混在して記録される場合があります。 @fileが出力される明確な原因はわかりませんが、WindowsでAnacondaを使っているとこのような表示になることが多いようです。Anacondaを使用していない場合でも、このような表示になる場合があるみたいです。
pip list –format freeze > requirements.txtを実行すればpip freezeと同じ結果なので、@ file://・・・の表示になる場合は、別の方法としてpip list –format freeze > requirements.txtを使用しましょう。
 
  
  
  
  
