LoginSignup
5
2

More than 1 year has passed since last update.

pipで一括アップデート(確認付き)

Last updated at Posted at 2017-05-19

こんにちは。
pipで一括アップデートを行う確認付きシェルスクリプトを作りました1

一括アップデート実行

確認無しで実行(基本)

基本となる確認無しの「一括アップデート実行」は、ワンライナーでは、

$ python3 -m pip list --format=columns --outdated | awk 'NR>=3 {print $1}' | xargs python3 -m pip install --upgrade

確認付き

一括アップデートの確認( [upgrade all? (y/n)])を付け、シェルスクリプトに仕立てました。

pip_upgrade_all.sh
#!/bin/sh
PIP="python3 -m pip"
OUTDATED=$(${PIP} list --format=columns --outdated | awk 'NR>=3 {print $1}')
[ -z "${OUTDATED}" ] && exit $?
echo "${OUTDATED}"
echo "[upgrade all? (y/n)]"
read -r KEYINPUT
[ "${KEYINPUT}" = "y" ] && echo "${OUTDATED}" | xargs ${PIP} install --upgrade
exit $?

依存関係確認

最新バージョンへアップデートする前には、依存関係の確認が本当は必要です。

pipdeptree コマンド利用で確認

下記例は osmnx 1.2.3 がインストールされている状態ですが、これが必要とする Shapely のバージョンは 2.0 より低いものです。したがってこの場合 Shapely を上記方法で率直に Latest へアップデートすることは良くないです(実行してしまうと警告が出ます)。

$ python3 -m pip install pipdeptree
$ pipdeptree -r -p Shapely | grep "<"
  - osmnx==1.2.3 [requires: Shapely>=1.8,<2.0]
$ 
$ python3 -m pip list --format=columns --outdated 
Package            Version     Latest Type
------------------ ----------- ------ -----
Shapely            1.8.5.post1 2.0.0  wheel

homebrew 由来の Python 環境下

homebrew 由来の Python で、package もインストールされる場合があります(下記例)。この場合も gdal を上記方法で率直に Latest へアップデートしない方が良さそうです(競合のおそれ?)。

$ ls -d /usr/local/Cellar/gdal/*
/usr/local/Cellar/gdal/3.6.0
$
$ python3 -m pip list --format=columns --outdated 
Package            Version     Latest Type
------------------ ----------- ------ -----
GDAL               3.6.0       3.6.1  sdist
  1. 参考:「pipで一括アップデート

5
2
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
5
2