結論
以下のコマンドを使う
$ pip list -o -l | cut -d " " -f 1 | tail -n +3 | xargs -p
-n 1 pip install --upgrade
流れは以下の様になっている.
- 仮想環境内の更新可能なパッケージのリストを出力
- 空白区切りで1列目を出力
- カラム名と区切り線を除くために3行目以降を出力
- 各行に対して<pip install -U>を行う
説明
一応各コマンドの説明を記載します.
- pip list
- -o --outdated : 更新可能な(更新していない)パッケージのリストを出力
- -l --local : 仮想環境内のパッケージのみ出力
- cut
- -d : 区切り文字を指定.デフォルトはtab区切り
- -f : 取り出す列の指定
- tail
- -n + : num行目を含む,num行目以降を出力
- xargs
- -p : ドライラン.実行されるコマンドを出力.1度確認するためにも個人的に推奨(ただし,1つのコマンドごとに確認が入る)
- -n : に渡す引数の最大値を指定
参考
- e8l. 「pipでパッケージ全体をアップデートする」.Github Gist,https://gist.github.com/e8l/c20ab194091dd02fafe7,(参照 2024/10/20)
- pip documentation v24.2.「pip list」,https://pip.pypa.io/en/stable/cli/pip_list/,(参照 2024/10/20)
- Ninton.「cutコマンドでタブ区切りの1列目を取り出すには」,https://www.ninton.co.jp/archives/1993,(参照 2024/10/20)
- @sugyan (Yoshihiro Sugi).「ファイルのn行目以降を表示する」.Qiita,https://qiita.com/dameNingen_ganbaru/items/cc1a0146ec1bc40ce69e,(参照 2024/10/20)
- @P-man_Brown.「【Linux】xargsコマンドの使い方」.Qiita,https://qiita.com/P-man_Brown/items/c3f2634b7b5e08306c8f,(参照 2024/10/20)