programing

pip 요구 사항 파일을 사용하여 패키지를 제거하고 설치하려면 어떻게 해야 합니까?

lovejava 2023. 7. 18. 21:24

pip 요구 사항 파일을 사용하여 패키지를 제거하고 설치하려면 어떻게 해야 합니까?

개발 중에 변경되는 pip 요구사항 파일을 가지고 있습니다.

할 수 있다pip요구사항 파일에 표시되지 않는 패키지를 제거하고 표시되는 패키지를 설치해야 합니까?표준 방법이 있습니까?

이를 통해 pip 요구 사항 파일을 패키지의 표준 목록으로 지정할 수 있습니다. 즉, 'if and only if' 접근 방식입니다.

업데이트: https://github.com/pypa/pip/issues/716 에서 새로운 기능으로 제안했습니다.

이렇게 하면 요구 사항에 없는 모든 항목이 제거됩니다.txt:

pip freeze | grep -v -f requirements.txt - | grep -v '^#' | xargs pip uninstall -y

설치된 패키지에서는 제대로 작동하지 않지만,-e유사한 .git, git 장소또유사저장소에즉서한는저,▁i.이러한 패키지를 건너뛰려면 다음과 같이 패키지를 필터링합니다.-e플래그:

pip freeze | grep -v -f requirements.txt - | grep -v '^#' | grep -v '^-e ' | xargs pip uninstall -y

그렇다면, 분명히:

pip install -r requirements.txt

2016년 업데이트: 하지만 실제로 위의 접근 방식을 사용하고 싶지는 않을 것입니다.보다 강력한 방법으로 원하는 작업을 수행할 수 있는 방법을 확인해 보십시오.

https://github.com/nvie/pip-tools

2016년 5월 업데이트:

이제 사용할 수도 있습니다.pip uninstall -r requirements.txt의 결과를 합니다 - 그나이기으로반달다대니다성제니 - ▁in다s▁however니▁it▁every합▁uninstall제거▁accompl▁-▁basically▁opposite의 모든 것을 제거합니다.requirements.txt

2019년 5월 업데이트:

Pipenvor Poetry를 확인해 보세요.패키지 관리의 세계에서 이런 종류의 질문을 약간 쓸모없게 만드는 많은 일들이 일어났습니다.하지만 저는 아직도 파이프 도구를 사용하는 것이 꽤 행복합니다.

이제 통과할 수 있습니다.-r requirements.txt에 대한 인수입니다.pip uninstall.

pip uninstall -r requirements.txt -y

적어도 현재.pip8.1.2,pip help uninstall표시:표시:

...
Uninstall Options:
  -r, --requirement <file>    Uninstall all the packages listed in the given requirements file.  This option can be
                              used multiple times.
...

그것은 이아다니닙의 pip로 그런 것을 해 볼 수 . 만약 당신이 정말로 그런 것을 원한다면, 당신은 스크립트를 써서 출력을 비교할 수 있습니다.pip freeze의 신과께와 requirements.txt가치보다 더 번거로울 수 있습니다.

를 사용하면 보다 쉽고 안정적으로 깨끗한 환경을 만들고 (다시 설치)할 수 있습니다.requirements.txt 예:

deactivate
rm -rf venv/
virtualenv venv/
source venv/bin/activate
pip install -r requirements.txt

간단히 말하면, '아니오'입니다. '파이프'로는 그렇게 할 수 없습니다.

설치된 모든 패키지로 새 파일을 생성할 수 있습니다.

pip freeze > uninstall.txt

그런 다음 모두를 제거합니다.

pip uninstall -r uninstall.txt -y

그런 다음 마지막으로 원래 요구 사항에 있던 패키지를 다시 설치합니다.txt 파일

pip install -r requirements.txt

작동하는 간단한 솔루션은 다음과 같습니다.

pip uninstall $(pip freeze) -y

이것은 오래된 질문이며(그러나 좋은 질문입니다), 질문을 받은 이후로 상황이 크게 바뀌었습니다.

에 대한 즉석의 언급이 있습니다.pip-sync다른 대답이지만, OP의 문제를 정확하게 해결하기 때문에 자체적인 대답을 할 가치가 있습니다.

Pip-sync는 다음을 수행합니다.requirements.txt입력으로 파일을 작성하고 현재 Python 환경과 정확히 일치하도록 "트루업"합니다.requirements.txt여기에는 사용자 환경에 존재하지만 존재하지 않는 모든 패키지 제거가 포함됩니다.requirements.txt.

설정:에 ( 3개의 라이브러리가 포함되도록.libA,libB,그리고.libC 예:

> cat requirements.txt
libA==1.0
libB==1.1
libC==1.2

에는 하만우환현재은경이 포함되어 있습니다.libC그리고.libD:

> pip freeze
libC==1.2
libD==1.3

pip-sync를 실행하면 원하는 최종 상태인 다음과 같은 결과가 나타납니다.

> pip-sync requirements.txt
> pip freeze
libA==1.0
libB==1.1
libC==1.2

Stephen의 제안은 좋은 생각이지만, 유감스럽게도 당신의 파일에 직접적인 요구 사항만 포함하면 효과가 없습니다. 이것은 저에게 더 명확하게 들립니다.

짝수를 포함한 모든 종속성이 제거됩니다.distributepip그 자체로

버전이 가상 환경을 추적하는 동안 새로 고침 요구 사항 파일 유지 관리

가상 환경을 버전 추적하는 방법은 다음과 같습니다.저는 최소한으로 유지하려고 노력합니다.requirements.txt직접적인 요구 사항만 포함하고 버전 제약 조건은 언급하지 않습니다.

합니다.venv.pipjava.

다음은 샘플 워크플로우입니다.


버전 추적을 사용하여 virtualenv 작업 공간 설정:

mkdir /tmp/pip_uninstalling
cd /tmp/pip_uninstalling
virtualenv venv
. venv/bin/activate

버전 추적 시스템 초기화:

git init
echo venv > .gitignore
pip freeze > venv.pip
git add .gitignore venv.pip
git commit -m "Python project with venv"

종속성이 있는 패키지를 설치하고 요구 사항 파일에 포함:

echo flask > requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip

이제 앱 구축을 시작한 다음 새 분기를 커밋하고 시작합니다.

vim myapp.py
git commit -am "Simple flask application"
git checkout -b "experiments"

추가 패키지 설치:

echo flask-script >> requirements.txt
pip install -r requirements.txt
pip freeze > venv.pip

재생한 다음 이전 버전으로 돌아갑니다.

vim manage.py
git commit -am "Playing with flask-script"
git checkout master

이제 관련 없는 패키지를 제거합니다.

pip freeze | grep -v -f venv.pip | xargs pip uninstall -y

저는 그 과정이 깃 훅으로 자동화될 수 있다고 생각하지만, 주제에서 벗어나지는 맙시다.

물론, 그러면 pip2pi와 같은 일부 패키지 캐싱 시스템 또는 로컬 저장소를 사용하는 것이 타당합니다.

여기서 @stephen-j-fuhry를 백업하는 것은 제가 사용하는 파워셸에 해당합니다.

pip freeze | ? { $_ -notmatch ((gc req.txt) -join "|") }

이것이 질문에 직접적으로 답하지는 않지만, 더 나은 대안은requirements.txt지금은 을 사용하고 있습니다.이 기능은 루비와 유사하게 작동합니다.Gemfile현재, 당신은 도구를 사용해야 하지만 바라건대 이것이 결국에 통합되기를 바랍니다.pip이것은 다음을 제공합니다.pipenv clean원하는 것을 수행하는 명령.

(기존 파일을 가져올 수 있습니다.requirements.txt와 함께pipenv install -r requirements.txt이 후에 당신은 그것을 가져야 합니다.Pipfile그리고requirements.txt제거할 수 있습니다.)

이제 다음을 사용하여 가능합니다.

pip uninstall -r requirements.txt

언급URL : https://stackoverflow.com/questions/13176968/how-can-i-use-a-pip-requirements-file-to-uninstall-as-well-as-install-packages