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.