pip를 통해 설치된 Python 패키지를 어떻게 감지하고 제거합니까?


73

실수로 pip대신을 사용하여 Python 패키지를 시스템에 설치했습니다 apt-get. 나는 두 가지 방법으로 이것을했다 :

  • VIRTUALENV의 이전 버전을 사용하여, 내가 추가하는 것을 잊었다 --no-site-packages그게 내가 전화했을 때 후 - VIRTUALENV를 만들 때 pip installVIRTUALENV보다는 시스템에 설치된 경우, 파이썬 패키지를
  • 올바로 설정 한 virtualenv에서 나는 입력 sudo pip install somepackage-sudo가 virtualenv가 아닌 시스템에 설치되었습니다.

나는 pip freezevirtualenv 외부에 입력 하고 거기에 있어서는 안되는 일부 Python 패키지를 발견 했기 때문에 이것을 알았 습니다. 이제 내 질문은 :

  • 시스템에 잘못 설치된 모든 Python 패키지 (즉, pip freeze목록에 나타나지만로 설치되지 않은 Python 패키지)를 어떻게 식별 apt-get합니까?
  • 어떻게 제거합니까?

답변:


56

Ubuntu Oneiric (및 최신 버전도 필요)은 pip 패키지를에 설치 /usr/local/lib/python2.7/dist-packages하고 apt패키지를에 설치 합니다 /usr/lib/python2.7/dist-packages. 따라서 이전 디렉토리와 sudo pip uninstall모든 패키지를 확인하십시오 .


12
나는 잔인하고 발행했다 sudo rm -r /usr/local/lib/python2.7. 여태까지는 그런대로 잘됐다.
— Apteryx

@Apteryx, 나도 똑같이 /usr/local/lib/python3.5했고 잠시 후에 update-notifier-commonPython 3 six패키지 가 없어서 패키지를 업그레이드 하지 못했습니다 . 로 설치 six를 마쳤습니다 sudo -H pip3 install six.
— Alexey

2
@Apteryx 신이 젠장! 나는 똑같이했고 지금은 내 전체 시스템이 모두 망했어! 우분투의 거의 모든 것이 파이썬에 의존하기 때문에!
— yukashima huksay

나는 이제 여러 개의 깨진 실행 파일을 가지고 있음을 알았습니다 /usr/local/bin/(얼마 전에 방금 제거 /usr/local/lib/python3.5하고 conda 로 전환했습니다 ).
— Alexey

22

Pip은 현재 OS가 소유 한 것을 제거하려고 시도하는 제거 명령을 무시합니다. 누락 된 패키지와 마찬가지로 오류가 발생하지 않습니다. 이제 다음 프로세스를 사용하여 제거 할 수 있습니다.

pip freeze > dump.txt

덤프 된 파일을 편집하여 -e"편집 가능한 설치"행 을 제거하십시오 . ==기호 뒤의 모든 것 ( %s;==.*;;gvim)은 공백으로 새 행을 바꿉니다 ( %s;\n; ;gvim). 그런 다음 소유하지 않은 모든 패키지를 제거 할 수 있습니다.

cat dump.txt | xargs sudo pip uninstall -y

몇 개의 패키지도 설치 되었기 때문에이 절차를 두 번 수행해야했습니다 ~/.local/lib.


1
나에게 맞는 답변이어야합니다
— Nam G VU

3
누구든지 생생한 원 라이너를 원한다면 :sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')
— Benoit Duffez

4
꼼꼼한! OS에서 특수 버전을 제공하는지 여부에 따라 다릅니다 pip. 아치 리눅스에서 pip행복하게 시스템 패키지를 제거합니다. 다른 한편으로, pip데비안 제시에서는 불평과 오류 :Not uninstalling virtualenv at /usr/lib/python3/dist-packages, owned by OS
— Thomas G.

1
당신은 sudo가 필요하십니까? -이것은 분명히 받아 들여질 것입니다
— Jonathan

6

AFAIK sudo pip install가에 설치됩니다 /usr/local/lib/pythonVERSION/dist-packages. sudo pip uninstall시스템 전체에서 패키지를 제거 하려면 실행해야합니다 . pip freeze패키지 메타 데이터 를 찾고 pip 및 virtualenvs 외부의 apt-get 모두에 설치된 모든 것을 나열합니다. -l가상 환경 내부 에는 해당 가상 환경에만 적용 할 수있는 패키지를 나열하는 옵션 이 있지만 가상 환경 내부 및 기본 환경 인 것 같습니다. 관련 패키지를 삭제할 수는 /usr/local/lib/pythonVERSION/dist-packages있지만 매우 편리한 방법은 아닙니다.


5

pip를 통해 설치된 패키지를 제거하려면 키보드에서 Ctrl+ Alt+ T를 눌러 터미널을 엽니 다. 열리면 아래 명령을 실행하십시오.

pip uninstall < package-name >

패키지를 검색하려면

pip search <package you want to search for>

pip에 의해 설치된 Python 패키지를 결정하려면 freeze명령을 통해 설치된 패키지 및 해당 버전의 목록을 제공합니다. 모든 인스턴스를 제거하고 sudo apt-get명령을 사용하여 다시 설치하는 것이 좋습니다.

sudo apt-get install python3

pip로 설치된 Python 패키지와 apt-get으로 어떤 Python 패키지를 설치했는지 어떻게 확인합니까? 나는 아직도 수 있습니다 pip uninstall내가 사용하는 경우 sudo pip install처음에?
— david.libremone 9

@ d3vid pip freeze는 설치된 패키지 (AFAICS) 만 표시합니다.
— Oli

1
@oli pip freeze는 적어도 정확하게는 apt가 설치 한 패키지를 나열합니다. 다른 답변은 여기에 설명되어 있습니다.
— nealmcb

0

파이썬 패키지에서 디스크 공간을 안전하게 정리해야했습니다. 이것은 패키지가 완전히 제거되었지만 Python 버전도 옮겨야하므로 이전 패키지가 필요하지 않았습니다. 다음을 사용하여 모든 패키지 이름을 가져오고 처음 두 줄을 건너 뛰고 첫 번째 열을 잡고 사용자 상호 작용없이 제거했습니다.

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}

-2

이것은 Homebrew와 관련이 있습니다. Homebrew를 설치하고 몇 가지 용도로 사용할 때까지 Mac Air에서 pyodbc에 문제가 없었습니다. 나를 위해 일한 솔루션으로 끝나는 github 에서이 스레드를 발견 했습니다.

"Homebrew가있는 경우 ODBC 헤더를 설치하십시오.

$ brew install unixodbc

"pip install pyodbc"를 다시 실행하세요. "

이 100 %는 저에게 문제를 해결하고 잠시만 걸렸습니다. 기회를주세요.


어쩌면 당신은 이것을 Ask Different에 게시해야합니까? apple.stackexchange.com
— david.libremone
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.