pip3のパッケージを一括でアップデートするためのシェルスクリプト


pip3のパッケージをワンライナーで雑に一括アップデート出来なかったので、シェルスクリプトを書きました。
実行後にpip3 checkで依存関係を確認しましょう。

#!/bin/zsh
# 更新が必要なパッケージの名前をファイルに書き出す
pip3 list -o | awk '{print $1}' > outdated_pip3_packages.txt

# ファイルの中身、3行目からパッケージ名が並んでいる
# Package
# ----------
# numpy
# pandas
# ~~~

# 書き出したファイルを1行ずつ読み込んでアップデート
cnt=0
while read line
do
  cnt=`expr $cnt + 1`
  if test $cnt -ge 3 ; then # パッケージ名が並ぶのは3行目から
    echo "Updating package $line..."
    pip3 install -U $line
  fi
done < outdated_pip3_packages.txt
echo "Update $cnt packages done!"

# パッケージの更新に使ったファイルを消す
rm outdated_pip3_packages.txt