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