python のパッケージをコマンド一行で最新版にアップデートする方法です
コマンド
普段 sudo を使わずに,--user つけてpipを実行している場合
$ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do pip3 install --user --upgrade $pkg ; done
普段 sudo を使ってpipを実行している場合
$ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do sudo pip3 install --upgrade $pkg ; done
これだけです
注意
上記の例ではpip3を使っています.実際にコマンドを実行する際には,使っている環境に合わせて pip-3 とか pip とかに書き換えて使用してください
解説
pip コマンドと bash を組み合わせています
更新が必要なパッケージを pip3 コマンドで調べます
$ pip3 list --format freeze --outdated
例えば以下のような出力が得られます
Mako==1.0.7
これを bash の read コマンドで読み取ります
説明のために読み取った値を表示するだけのコードを書いておきます
$ pip3 list --format freeze --outdated | while IFS='==' read pkg dummy; do echo "pkg:[$pkg] dummy:[$dummy]"; done
変数IFSを使って区切り文字として"=="を指定しています.この場合 read コマンドは,"Make==1.0.7"という入力行にたいして,最初のトークン"Mako"を変数pkgに,残りのトークン"1.0.7"を変数dummyに格納します
これで変数pkg にパッケージ名が入るので,あとは pip3 install --user --upgrade $pkg でパッケージを更新していきます