requirements.txt
次のバージョンを一覧表示するファイルがあります。
# requirements.txt
channels==2.4.0
colorama>=0.2.3
daphne==2.5.0
django-q>=1.1.4
PIPのあるリリースの場合は==
正しいバージョンがインストールされますが、PIPのあるリリースの場合は>=
他のパッケージに基づいて最も高いバージョンがインストールされます。すべてのパッケージのインストール済みバージョンを新しいファイルに保存したい場合、または>=
可能であれば元のファイルのバージョンを直接上書きしたいと思います。結果は次のとおりです。
# requirements_updates.txt
channels==2.4.0
colorama==0.4.3
daphne==2.5.0
django-q==1.3.4
テスト中に同様のことを試みましたが(おそらく無視する必要があります)、複数のパイプの後に出力の生成が中断され、盲目的にコピーする必要があるパッケージもcat requirements.txt | grep -Po ".*?(?=>=)" | xargs -I "python -m pip freeze | grep %" | grep -Po "(?<===).*?(?=$)"
考慮しませんでした。==
私は実行中のDockerコンテナ内で共有して使いやすいので、スクリプトよりもコマンドを好みます。
ベストアンサー1
次のことができます。
python -m pip freeze |
awk '!x {v[$1] = $2; next}
NF>1 && $1 in v {$0 = $1"=="v[$1]}
{print}
' FS='==' - x=1 FS='>=' requirements.txt