반응형
질문
pip
을 사용하여 Python 패키지를 한 번에 업그레이드하는 것이 가능한가요?
참고: 공식 이슈 트래커에 이 기능 요청이 있습니다.
답변
아직 내장 플래그는 없습니다. pip 버전 22.3부터 --outdated
와 --format=freeze
는 상호 배제적이 되었습니다. JSON 출력을 파싱하기 위해 Python을 사용하세요:
pip --disable-pip-version-check list --outdated --format=json | python -c "import json, sys; print('\n'.join([x['name'] for x in json.load(sys.stdin)]))"
pip<22.3
을 사용하는 경우 다음을 사용할 수 있습니다:
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
pip
의 이전 버전에 대해서는 다음을 사용하세요:
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
grep
는 @jawache가 제안한대로 수정 가능한 ("-e") 패키지 정의를 건너뛰는 것입니다. (그렇습니다,grep
+cut
을sed
또는awk
또는perl
등으로 대체할 수 있습니다).xargs
의-n1
플래그는 하나의 패키지 업데이트가 실패하더라도 모든 것을 중지하지 않도록합니다 (감사합니다 @andsens).
참고: 이에 대한 무한한 가능한 변형이 있습니다. 이 답변을 짧고 간단하게 유지하려고 노력하고 있지만, 의견을 제시해 주시기 바랍니다!
반응형
댓글