1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pipでインストールされている全てのPackageを一括UpgradeするためのOne-liner

Last updated at Posted at 2023-10-23

はじめに

PipでPython libraryを管理する場合、pip list -oなどでUpgradeされたPackageを確認すると、思いのほか大量にある場合がある。一つ一つ手動でUpgradeしても良いが、大量にあると少々面倒だ。
そこで、一括でUpgradeできるOne-linerを書いてみた。

One-liner

基本形

基本形は以下の通りとなる。

pip install -U `pip list -o | tail -\`expr \\\`pip list -o | wc -l\\\` - 2\` | awk '{print $1}' | sort -u`

仕様・解説

  1. UpgradeされるPackage数を取得
    pip list -o | wc -lで取得された行数から、Header行の2を引いている。
  2. pip list -oの出力からHeaderを除いたPackage一覧を出力し、Package名が格納されている1列目を抜き出す。
  3. 上記で作成したPackage一覧に対してUpgradeを実施。

一部のPackageを除外

UpgradeしたくないPackageや、PipでUpgradeしようとしても失敗するPackageはgrep -vを用いて除外する。

pip install -U `pip list -o | tail -\`expr \\\`pip list -o | wc -l\\\` - 2\` | awk '{print $1}' | sort -u | grep -v "PyGObject\|pycairo"`

上記の例ではPyGObjectpycairoを除外している。

特定バージョンのPythonや、InterpreterのPackageに対して実行

1台のマシンに複数バージョンのPythonがインストールされている場合や、Pypyなどの別のPython実行環境がインストールされている場合、以下のようにして該当のPython実行環境に対してUpgradeを実施できる。
以下の例はPypy3.9環境に対して実行した例。

pypy3.9 -m pip install -U `pypy3.9 -m pip list -o | tail -\`expr \\\`pypy3.9 -m pip list -o | wc -l\\\` - 3\` | awk '{print $1}' | sort -u`

これで、瞬時にPython packageの一括Upgradeを実施できるようになった。
誰かのお役に立てれば幸いである。
では、楽しいPython lifeを!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?