Pythonお悩み解決

Pythonに関する疑問や悩みにこたえるブログです

パッケージ管理の方法を知りたい(pipの基本的な使い方)

Pythonは標準ライブラリ以外にも、数多くのサードパーティ製のパッケージがあり、PyPI(ぱいぴーあい)というリポジトリにて公開されています。

Pythonサードパーティ製パッケージをインストールするには、pipというツールを使います。

今回はpipの基本的な使い方を解説しましょう。

pipのインストール

pipPythonをインストールすれば同時にインストールされるので、すぐに使えます*1

もしインストールされていない場合は、以下のようにensurepipモジュールを使うことでpipをインストールできます。

python -m ensurepip

なお、Debian/Ubuntuに標準でインストールされているPythonにはensurepipモジュールが存在しません。そのため、代わりにaptコマンドでpython3-pipというパッケージをインストールしてください。

sudo apt install -y python3-pip

pipを使うときの注意点

pipはデフォルトではシステム全体で使える領域にパッケージをインストールしてしまいます。

各プロジェクト毎に必要なパッケージはそれぞれ異なるので、システム全体にインストールするのはお勧めしません。

パッケージをインストールする場合は、基本的に仮想環境を使うのがよいでしょう。

以降は、Pythonの仮想環境が有効になっていることを前提に説明します。

仮想環境について詳しくない方は、こちらの記事をご参照ください。

python-onayami.com

パッケージのインストール

PyPIからパッケージをインストールするには、installコマンドを使います。

pip install <パッケージ名>

指定した「パッケージ名」がPyPIに公開されていれば、そのパッケージがインストールされます。

試しにWebフレームワークであるDjangoをインストールしてみます。

(venv) $ pip install Django
Collecting Django
  Downloading Django-4.1-py3-none-any.whl (8.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 27.8 MB/s eta 0:00:00
Collecting sqlparse>=0.2.2
  Downloading sqlparse-0.4.2-py3-none-any.whl (42 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.3/42.3 kB 52.8 MB/s eta 0:00:00
Collecting asgiref<4,>=3.5.2
  Downloading asgiref-3.5.2-py3-none-any.whl (22 kB)
Installing collected packages: sqlparse, asgiref, Django
Successfully installed Django-4.1 asgiref-3.5.2 sqlparse-0.4.2

この記事を執筆した時点で最新のDjango 4.1がインストールされました。また、依存パッケージがあれば合わせてインストールされます。

バージョンを指定してインストール

installコマンドは、デフォルトではそのパッケージの最新版をインストールします。

しかし、バージョンを指定したいこともあるでしょう。その場合は、以下のようにバージョンを指定してインストールできます。

pip install <パッケージ名>==<バージョン>

試しにDjango 4.0をインストールしてみます。

(venv) $ pip install Django==4.0
Collecting Django==4.0
  Using cached Django-4.0-py3-none-any.whl (8.0 MB)
Requirement already satisfied: sqlparse>=0.2.2 in ./venv/lib/python3.10/site-packages (from Django==4.0) (0.4.2)
Requirement already satisfied: asgiref<4,>=3.4.1 in ./venv/lib/python3.10/site-packages (from Django==4.0) (3.5.2)
Installing collected packages: Django
  Attempting uninstall: Django
    Found existing installation: Django 4.1
    Uninstalling Django-4.1:
      Successfully uninstalled Django-4.1
Successfully installed Django-4.0

Djangoのバージョンが4.0にダウングレードされました。

インストールしたパッケージの確認

インストールしたパッケージを確認するには、listコマンドを使います。

pip list

現在インストールされているパッケージを確認してみましょう。

(venv) $ pip list
$ pip list
Package    Version
---------- -------
asgiref    3.5.2
Django     4.0
pip        22.2.2
setuptools 65.0.2
sqlparse   0.4.2

インストールしたパッケージと、それぞれのバージョンが表示されました。

先ほどインストールしたDjango 4.0が確認できます。

なお、asgirefsqlparseDjangoの依存パッケージです。また、pipsetuptoolsはデフォルトでインストールされています。

古いパッケージの確認

開発を続けていると、パッケージ側のバージョンが上がり、プロジェクトで使用しているパッケージが古くなることがあります。

どのパッケージが古くなっているかを確認したい場合は、以下のコマンドを使います(もしくは pip list --outdated)。

pip list -o

実際に使ってみましょう。

(venv) $ pip list -o
Package Version Latest Type
------- ------- ------ -----
Django  4.0     4.1    wheel

先ほどDjangoを4.0にダウングレードしたので、最新版(Latest)であるDjango 4.1の存在が確認できます。

パッケージのアップグレード

インストール済みのパッケージを最新バージョンにするには以下のコマンドです(もしくは pip install --upgrade <パッケージ名>)。

pip install -U <パッケージ名>

ダウングレードしたDjangoを再び最新バージョンにしてみましょう。

(venv) $ pip install -U Django
Requirement already satisfied: Django in ./venv/lib/python3.10/site-packages (4.0)
Collecting Django
  Using cached Django-4.1-py3-none-any.whl (8.1 MB)
Requirement already satisfied: sqlparse>=0.2.2 in ./venv/lib/python3.10/site-packages (from Django) (0.4.2)
Requirement already satisfied: asgiref<4,>=3.5.2 in ./venv/lib/python3.10/site-packages (from Django) (3.5.2)
Installing collected packages: Django
  Attempting uninstall: Django
    Found existing installation: Django 4.0
    Uninstalling Django-4.0:
      Successfully uninstalled Django-4.0
Successfully installed Django-4.1

執筆時点での最新バージョン(4.1)に更新されました。

複数の環境間でパッケージのインストール状態を統一する

以下のコマンドで、現在インストールしているパッケージを、インストール可能なフォーマットで出力できます。

pip freeze

実際に使ってみましょう。

(venv) $ pip freeze
asgiref==3.5.2
Django==4.1
sqlparse==0.4.2

インストール済みのパッケージとバージョンが、インストール可能な形式で一覧表示されました。

これを保存して共有すれば、複数の環境間でパッケージのインストール状態を統一するのに便利です。

保存するファイル名は任意ですが、「requirements.txt」という名前がよく使われます。

(vevn) $ pip freeze > requirements.txt

保存した「requirements.txt」を使って、一括でパッケージをインストールするには以下のようにします。

(vevn) $ pip install -r requirements.txt

パッケージのアンインストール

最後にパッケージをアンインストールする方法です。以下のコマンドでパッケージをアンインストールできます。

pip uninstall <パッケージ名>

Djangoをアンインストールしてみます。途中でアンインストールするか確認されるので、「Y」を入力すればアンインストールできます。

(venv) $ pip uninstall Django
Found existing installation: Django 4.1
Uninstalling Django-4.1:
  Would remove:
    /Users/test/blog/venv/bin/django-admin
    /Users/test/blog/venv/lib/python3.10/site-packages/Django-4.1.dist-info/*
    /Users/test/blog/venv/lib/python3.10/site-packages/django/*
Proceed (Y/n)? Y
  Successfully uninstalled Django-4.1

Djangoがアンインストールされました。

ただし、以下の通りDjangoインストール時に合わせてインストールされた依存パッケージはアンインストールされていないので、注意しましょう。

(venv) $ pip list
Package    Version
---------- -------
asgiref    3.5.2
pip        22.2.2
setuptools 65.0.2
sqlparse   0.4.2

まとめ

pipには他にも機能がありますが、よく使う基本的なコマンドを紹介しました。

最後に今回紹介したコマンドをまとめます。

# パッケージのインストール
pip install <パッケージ名>

# バージョンを指定してパッケージのインストール
pip install <パッケージ名>==<バージョン>

# パッケージのバージョンアップ
pip install -U <パッケージ名>

# パッケージのアンインストール
pip uninstall <パッケージ名>

# インストール済みのパッケージの確認
pip list

# 古いパッケージの確認
pip list -o

# インストール済みのパッケージをrequirements.txtに保存
pip freeze > requirements.txt

# requirements.txtを使ってパッケージをインストール
pip install -r requirements.txt

*1:Python 3.4以降