grep / xargsを使用して、要件ファイル(PIP)に「> =」と記載されている現在インストールされているバージョンをインポートします。

grep / xargsを使用して、要件ファイル(PIP)に「> =」と記載されている現在インストールされているバージョンをインポートします。

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

おすすめ記事