내 가상 환경 중 하나를 수정하려고합니다. 설치된 모든 라이브러리를 프로덕션과 일치하는 라이브러리로 다시 설정하고 싶습니다.
pip로 이것을 수행하는 빠르고 쉬운 방법이 있습니까?
답변
이 스 니펫을 대체 솔루션으로 찾았습니다. virtualenv를 재생성하는 것보다 라이브러리를보다 우아하게 제거합니다.
pip freeze | xargs pip uninstall -y
VCS를 통해 패키지를 설치 한 경우 해당 행을 제외하고 패키지를 수동으로 제거해야합니다 (아래 설명에서 높이기).
pip freeze | grep -v "^-e" | xargs pip uninstall -y
답변
이것은 모든 Mac, Windows 및 Linux 시스템에서 작동합니다. requirements.txt 파일에서 모든 pip 패키지 목록을 가져 오려면 (참고 : 존재하는 경우 requirements.txt를 덮어 쓰고 새 파일을 작성합니다. 또한 오래된 requirements.txt를 바꾸지 않으려는 경우 다른 파일 이름을 지정하십시오. 모든 다음 명령 (places.txt).
pip freeze > requirements.txt
이제 하나씩 제거
pip uninstall -r requirements.txt
한 번에 모두 제거하려면
pip uninstall -r requirements.txt -y
requirements.txt
파일 이있는 기존 프로젝트에서 작업 중이고 환경이 다른 requirements.txt
경우 위의 예에서 를로 바꾸십시오 toberemoved.txt
. 그런 다음 위의 단계를 수행하면requirements.txt
를 사용하여 이제 깨끗한 환경을 업데이트 .
그리고 파일을 만들지 않고 단일 명령의 경우 (@joeb 제안).
pip uninstall -y -r <(pip freeze)
답변
이것은 최신으로 작동합니다. 나는 그것이 가장 짧고 선언적인 방법이라고 생각합니다.
virtualenv --clear MYENV
그러나 일반적으로 불변성 규칙 이후 virtualenv를 삭제하고 다시 만듭니다!
답변
이 답변은 스레드에서 가장 우아한 솔루션 중 하나이므로 주석 섹션 에서이 답변을 높이고 싶었습니다. 이 답변에 대한 전체 크레딧은 @joeb 로갑니다 .
pip uninstall -y -r <(pip freeze)
위의 답변 중 많은 부분이 처리하지 못하는 virtualenv 컨텍스트 외부에서 사용자 패키지 폴더를 지우는 유스 케이스에 유용합니다.
편집 : 누구나이 명령을 Makefile에서 작동시키는 방법을 알고 있습니까?
보너스 : bash 별명
편의를 위해 이것을 내 bash 프로필에 추가합니다.
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
그런 다음 다음을 실행하십시오.
pipuninstallall
pipenv의 대안
pipenv 를 사용하는 경우 다음을 실행할 수 있습니다.
pipenv uninstall --all
답변
다른 이름을 사용 pip list
하거나 pip freeze
포함해야하는--local
다른 답변 은 공통 네임 스페이스에있는 패키지도 제거합니다.
여기 제가 정기적으로 사용하는 스 니펫이 있습니다.
pip freeze --local | xargs pip uninstall -y
참조 : pip freeze --help
답변
방법 1 (함께 pip freeze
)
pip freeze | xargs pip uninstall -y
방법 2 (포함 pip list
)
pip list | awk '{print $1}' | xargs pip uninstall -y
방법 3 (함께 virtualenv
)
virtualenv --clear MYENV
답변
다음을 수행하여 관리했습니다.
현재 설치된 패키지 목록으로 reqs.txt 라는 요구 사항 파일을 작성하십시오.
pip freeze > reqs.txt
그런 다음 reqs.txt 에서 모든 패키지를 설치 제거하십시오.
pip uninstall \
-y # remove the package with prompting for confirmation
-r reqs.txt
실수로 핍 요구 사항 파일을 항상 가지고 있기 때문에이 방법이 마음에 듭니다. 또한 반복 가능합니다.