パッケージ管理したい(pip

$ pip3 install パッケージ名
$ pip3 install -U パッケージ名
$ pip3 uninstall パッケージ名

pippip3)はPython標準のパッケージ管理ツールです。

注釈

pippip3は同じコマンドです。 Python2系から3系の移行期には、pip(=2系)とpip3(=3系)で使い分けられるようになっていました。 いまは3系がメインなのでpip = pip3となっていますが、僕は習慣でpip3を使っています。

ヒント

pipは、複数のパッケージ間の依存関係の管理があまり得意ではありません。 そのため、システム全体ではなく、プロジェクトごとの仮想環境にインストールするのが最近の定番です。

簡単に仮想環境で管理できるパッケージ管理ツールも多数あります。 uvpoetrypipx などを使ってみるのがよいと思います。

パッケージを更新したい(--upgrade

$ pip3 install -U パッケージ名

-U / --upgradeオプションでパッケージを更新できます。 初回インストール時にこのオプションをつけても問題ありません。

パッケージを一括で更新したい

$ pip3 list --outdated | awk 'NR>2{print $1}' | xargs pip3 install -U pip

pip3には、新しいバージョンがリリースされたパッケージを一括で更新するコマンドがありません。 そのためawkコマンドxargsコマンドと組み合わせてパイプ処理します。

  1. pip3 list --outdatedで更新が必要なパッケージをリストします

  2. その出力結果に対してawkを使ってパッケージ名(=2行目以降の1列目)を抽出します

  3. その出力結果をxargsに渡してpip3 install -U 更新が必要なパッケージ名たちを実行します

パッケージを一括で追加したい(--requirements

// 書式: pip3 install -r ファイル名
$ pip3 install -r requirements.txt

$ pip3 freeze > requirements.txt

パッケージの一覧はrequirements.txtで管理するのが一般的です。 pip3 install -rオプションでファイルに書かれているパッケージを一括インストールできます。

また、pip3 freezeで現在使用しているパッケージを requirements.txtに出力できます。

注釈

requirements.txtによるパッケージ管理は、長い間利用されてきた方法です。 最近では、2018年に導入されたよりモダンなpyproject.tomlを使った方法が主流になっています。

Pythonの実行環境を指定したい

$ python3.10 -m pip install パッケージ名
$ python3.11 -m pip install パッケージ名
$ python3.12 -m pip install パッケージ名

pip3は基本的にシステムで有効なPython実行環境と連動しています。 python -m pippipをモジュールとして呼ぶことで、 指定したPython環境にインストールできます。

// python3の実行パスを確認
$ which -a python3
/opt/homebrew/bin/python3
/usr/bin/python3

// python3の実体を確認
$ ls -1 /opt/homebrew/bin/python*
/opt/homebrew/bin/python3
/opt/homebrew/bin/python3-config
/opt/homebrew/bin/python3.11
/opt/homebrew/bin/python3.11-config
/opt/homebrew/bin/python3.12
/opt/homebrew/bin/python3.12-config
/opt/homebrew/bin/python3.13
/opt/homebrew/bin/python3.13-config

注釈

HomebrewでPythonをインストールして更新していると、 気づかないうちに複数のPythonバージョンが溜まっていることがあります。 パッケージがうまくインストールできなかったり、importできなかったりする場合は、 自分がどのバージョンを使っているのか、確認するとよいです。

仮想環境と組み合わせる

// 仮想環境を作成する
$ python3 -m venv .venv

// 仮想環境を有効にする
$ source .venv/bin/activate

// パッケージを追加する
(.venv) $ pip install -r requirements.txt

// 仮想環境を無効化する
(.venv) $ deactivate

venvパッケージと組み合わせて、仮想環境の中で使用できます。 仮想環境を有効化すると、pipなどのコマンドはすべて.venvの中に限定されます。 インストールしたパッケージはグローバル(=システム)に影響しないため、 複数のプロジェクトで異なる依存関係を安全に管理できます。

注釈

仮想環境は.venvというディレクトリに作成するのが一般的です。 VS Codeでも自動検出してくれます。

パッケージ管理ツール選択フローチャート

パッケージ管理ツールを選択するときのフローチャートを整理しました。 はじめての場合は、標準パッケージであるvenv + pipからはじめるのが無難です。 パッケージ開発に取り組みむ場合はuvを選択するのがオススメです。 CLIツールとしての利用であればpipxが手軽です。

スタート
  │
  ├── CLIツールだけをインストールしてすぐ使いたい?
  │     └─ はい → pipx
  │     └─ いいえ
  │
  ├── プロジェクトごとに環境を分けたい?
  │     └─ はい
  │         ├── 標準機能だけでよい?(シンプルで軽量が希望)
  │         │     └─ はい → venv + pip
  │         │     └─ いいえ
  │         │         ├── 依存の自動管理や公開もしたい?
  │         │         │     └─ はい → uv
  │         │         │     └─ poetry(GUIや柔軟な機能がほしい場合)
  │         │         └─ その他 → pipenv(古いが一体型)
  │         └─(補足:Pythonバージョンも自動で管理したい → uv / pyenv)
  │
  └── とりあえずライブラリを入れて試したい?
        └─ はい → pip
        └─ いいえ → プロジェクトで再利用したい → uv or poetry
        flowchart TD
    start([スタート])

    q1{CLIツールだけをインストールしてすぐ使いたい?}
    q2{プロジェクトごとに環境を分けたい?}
    q3{標準機能だけでよい?(シンプルで軽量)}
    q4{依存の自動管理や公開もしたい?}

    start --> q1
    q1 -- はい --> pipx[pipx を使う]
    q1 -- いいえ --> q2

    q2 -- いいえ --> pip[pip を使う]
    q2 -- はい --> q3

    q3 -- はい --> venv[venv + pip を使う]
    q3 -- いいえ --> q4

    q4 -- はい --> uv[uv を使う]
    q4 -- いいえ --> poetry[poetry を使う(GUI/柔軟な機能)]
    q4 -- その他 --> pipenv[pipenv(古いが一体型)]

    uv --> note1[Python バージョンも自動で管理したいなら uv または pyenv も検討]
    poetry --> note1