pip 제거를위한 확인 프롬프트 무시


94

내 모든 webapp 종속성이 virtualenv에 설치되었는지 확인하기 위해 내 수퍼 유저 환경에서 모든 django 패키지를 제거하려고합니다.

sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall

그러나 pip는 모든 패키지 제거를 확인하기를 원하며 pip에 대한 -y옵션 이없는 것 같습니다 . 파이썬 모듈 배치를 제거하는 더 좋은 방법이 있습니까? 가 rm -rf .../site-packages/갈 수있는 적절한 방법은? easy_install 대안이 있습니까?

또는 시스템 python 모듈에 의존하여 이러한 종속성을 충족시키는 것보다 pip가 virtualenv에 모든 종속성을 설치하도록하는 것이 더 낫습니다 (예 :) pip --upgrade install. 그러나 시스템 모듈을 재정의하기 위해 동일하게 이전 버전을 설치 하도록 강제 하는 것이 좋습니다. 내 virtualenv 활성화를 시도한 다음 pip install --upgrade -r requirements.txt내 시스템 경로에 존재하는 종속성을 설치하는 것 같지만 시스템 모듈이 오래 되었기 때문인지 확신 할 수 없습니다. 그리고이 man pip동작을 보장하지 않는 것 같습니다 (즉 , 시스템 사이트 패키지에 이미 존재하는 동일한 버전의 패키지 설치 ).

답변:


205

pip 버전 7.1.2부터 실행할 수 있습니다. pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

또는 파일에서

pip uninstall -y -r requirements.txt

65

Pip에는 --yes 옵션이 포함되지 않습니다 (pip 버전 1.3.1 기준).

해결 방법 : yes를 파이프하십시오!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo

2
아, 얼마나 간단합니다. 유닉스 프로그램 알림에 감사드립니다. yes매우 유용합니다.
2013 년

그러나 나는 이것이 이것이 효과가 있다고 생각하지 않습니다 (오늘 내 시스템에서 시도하기에는 너무 소심합니다). yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall때문에 yesES가에 의해 급하게 먹었다받을 것이 pip freeze아니라 xargs인수 / 명령 pip uninstall.
2013 년

3
pip freeze > all_to_uninstall.txt yes | pip uninstall -r all_to_uninstall.txt
Nick

8

에서 모든 패키지를 제거하려면 requirements.txt,

pip uninstall -y -r requirements.txt

1

또는 시스템 Python 모듈에 의존하여 이러한 종속성을 충족시키는 것보다 pip가 virtualenv에 모든 종속성을 설치하도록 강제하는 것이 더 낫습니다.

예. 내장 된 시스템 설치 패키지를 너무 엉망으로 만들지 마십시오. 많은 시스템 패키지, 특히 OS X (데비안 및 파생 된 변종 포함)에서 너무 많이 의존합니다.

pip --upgrade install, 그러나 시스템 모듈을 재정의하기 위해 동일하게 이전 버전을 설치해야합니다.

시스템 패키지에 이미있는 venv 내에 설치된 패키지가 몇 개 더있는 경우, 특히 버전이 다른 경우 큰 문제가되지 않습니다. 이것이 virtualenv의 요점입니다.

내 virtualenv를 활성화 한 다음 pip install --upgrade -r requirements.txt를 활성화하려고 시도했는데 내 시스템 경로에 존재하는 종속성도 설치하는 것 같지만 내 시스템 모듈이 오래 되었기 때문인지 확신 할 수 없습니다. 그리고 man pip는이 동작을 보장하지 않는 것 같습니다 (즉, 시스템 사이트 패키지에 이미 존재하는 동일한 버전의 패키지 설치).

아니요, --no-site-packages플래그를 사용하여 만들지 않았거나 필수 버전과 현재 버전이 다른 경우가 아니면 기본 설치에 이미있는 패키지를 설치하지 않습니다 .


1

Lakshman Prasad가 옳았 pip --upgrade고 / 또는 virtualenv --no-site-packages갈 길입니다. 시스템 전체의 파이썬 모듈을 제거하는 것은 좋지 않습니다.

--upgradePIP에 대한 옵션은 이미 시스템 환경에 존재하는 경우에도, 가상 ENV에 필요한 모듈을 설치 않으며, 필요한 버전 또는 최신 버전의 시스템 버전과 동일한 경우에도.

pip --upgrade install

그리고 가상 환경을 만들 때 --no-site-packages 옵션을 사용하면 시스템 경로에 누락 된 모듈이 있어도 누락 된 종속성이 가려지지 않습니다. 이는 한 패키지에서 다른 패키지로 모듈을 마이그레이션하는 동안 문제를 노출하는 데 도움이됩니다. 이내에.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.