Grep
使用 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 容器中共享和使用。
您可以執行以下操作:
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