distutils를 사용하여 설치된 Python 패키지를 어떻게 제거합니까?


92

Python 설치에서 디렉토리를 간단히 삭제할 수 있습니까? 아니면 삭제해야하는 느린 파일이 있습니까?

답변:


45

전달하는 옵션 install과 시스템 / 패키지에있는 distutils 구성 파일 의 내용에 따라 다릅니다 . 나는 이러한 방식으로 지정된 디렉토리 외부에서 파일이 수정된다고 생각하지 않습니다.

특히 distutils에는 제거 명령이 없습니다. .

패키지 / 달걀을 삭제하면 종속성 문제가 발생할 수 있습니다 easy_install. 이러한 문제를 완화하려는 시도 와 같은 유틸리티가 있습니다.


4
질문의 느린 파일 부분을 직접 해결하기 위해 이것을 업데이트 할 수 있습니까?
S.Lott

distutils 구성 및 설치 플래그에 지정된 디렉토리 외부에는 파일이 생성되지 않으므로 "잔여"파일이이 디렉토리에 존재한다고 생각했습니다. 패키지마다 다릅니다.
cdleary

2
@cdleary : 감사합니다.하지만 긴 댓글 스레드를 추가하는 것이 아니라 단순히 답변을 명확히하고 강화하기를 바랐습니다.
S.Lott

2
@ S.Lott : 죄송합니다. 답변의 어느 부분에 대해 명확히하고 싶은지 모르겠습니다. 더 구체적으로 말씀해 주시겠습니까?
cdleary

1
msg139773 날짜 : 2011-07-04 14:35 distutils2 / packaging은 이제 제거 기능과 pysetup 제거 명령을 제공합니다.
Edward

19

삭제해야하는 세 가지 설치 항목은 다음과 같습니다.

  1. 패키지 / 모듈
  2. 스크립트
  3. 데이터 파일

이제 내 Linux 시스템에서 다음 위치에 있습니다.

  1. /usr/lib/python2.5/site-packages
  2. / usr / bin
  3. / usr / share

그러나 Windows 시스템에서는 전적으로 Python 배포 디렉토리 내에있을 가능성이 더 큽니다. 나는 리눅스 패턴을 따르는 것이 더 쉽다는 것을 제외하고는 OSX에 대해 전혀 모른다.


14

또 다른 타임 스탬프 기반 해킹 :

  1. 앵커 만들기 : touch /tmp/ts
  2. 제거 할 패키지를 다시 설치하십시오. python setup.py install --prefix=<PREFIX>
  3. 앵커 파일보다 최신 파일을 제거하십시오. find <PREFIX> -cnewer /tmp/ts | xargs rm -r

1
-1. 나는 | xargs rm -r. 각 파일을 수동으로 검토하는 것이 좋습니다 . ext4 (및 기타 파일 시스템)에서는 find모든 폴더 도 나열됩니다 . 접두사가 /usr이면 을 삭제/usr/* 합니다.
Mateen Ulhaq

8

예, distutils가 설치 한 모든 것을 삭제하는 것이 안전합니다. 설치된 폴더 또는 .egg 파일에 적용됩니다. 당연히 해당 코드에 의존하는 것은 더 이상 작동하지 않습니다.

다시 작동하게하려면 다시 설치하면됩니다.

그런데 distutils를 사용하는 경우 다중 버전 기능을 사용하는 것도 고려해보십시오. 단일 패키지의 여러 버전을 설치할 수 있습니다. 즉, 단순히 최신 버전을 설치하려는 경우 패키지의 이전 버전을 삭제할 필요가 없습니다.


5

우분투 12.04에서 기본적으로보아야 할 유일한 장소는

/usr/local/lib/python2.7/

관련 폴더와 파일이 있으면 제거하기 만하면됩니다!


때때로 / usr / lib / python <2.7 / 3.6>
Vineet

4

이것이 테스트 및 / 또는 개발 목적인 경우 setuptools 에는 변경할 때마다 업데이트 되는 개발 명령이 있습니다 (따라서 변경할 때마다 제거하고 다시 설치할 필요가 없음). 이 명령을 사용하여 패키지를 제거 할 수도 있습니다.

이것을 사용하면 스크립트 로 선언하는 모든 것이 느린 파일로 남게됩니다.


4

install --record + xargs rm

sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt

모든 파일을 제거하고 빈 디렉토리를 남겨 둡니다.

그것은 이상적이지 않으며 패키지 충돌을 피하는 데 충분해야합니다.

그런 다음 원하는 경우 수동으로 작업을 완료 할 수 있습니다. files.txt 하거나 용감하게 빈 디렉터리 제거를 자동화 할 수도 있습니다.

안전한 도우미는 다음과 같습니다.

python-setup-uninstall() (
  sudo rm -f files.txt
  sudo python setup.py install --record files.txt && \
  xargs rm -rf < files.txt
  sudo rm -f files.txt
)

Python 2.7.6, Ubuntu 14.04에서 테스트되었습니다.


3

Windows의 Python :

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?

2

방금 파이썬 패키지를 제거했고 완벽하게 수행했는지 확신 할 수는 없지만 상당히 확신합니다.

나는 모든 목록을 얻는 것으로 시작했습니다.내 패키지의 모든 파일이 어느 정도 동일한 타임 스탬프를 가지며 다른 파일은 없을 것이라는 가정하에 파이썬 관련 파일 날짜순 .

다행히도, 아래에 파이썬이 설치되어 있습니다 /opt/Python-2.6.1. Linux 배포판과 함께 제공되는 Python을 사용하고 있었다면 모든을 샅샅이 /usr뒤 져야했는데 시간이 오래 걸렸을 것입니다.

그런 다음 그 목록을 검토 한 후 핵을 뚫고 자하는 모든 항목이 하나의 디렉토리, /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/하나의 파일 /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.

그래서 방금 삭제했습니다.

날짜별로 정렬 된 파일 목록을 얻는 방법은 다음과 같습니다.

find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-

(그건 GNU "찾기"라고 생각합니다. OS X에서 얻는 맛은 "-printf '% T @'"에 대해 알지 못합니다.)

나는 그것을 항상 사용합니다 .


2

Windows 7의 경우

제어판-> 프로그램-> 제거

, 다음

제거 할 python 패키지를 선택하십시오.


@Mauricio 목록에 이전 버전이 표시되지 않지만 사이트 패키지에서 달걀 파일을 볼 수 있습니다. 이것이 문제입니까?

1

Mac OSX에서 pathToPython / site-packages / 아래의 두 디렉토리를 수동으로 삭제 하면 작동합니다.

  • {패키지 이름}
  • {packageName}-{version} -info

예를 들어 distutils 설치 프로젝트 인 pyasn1 을 제거 하려면 다음 을 수행하십시오 .

  • rm -rf lib / python2.7 / site-packages / pyasn1
  • rm -rf lib / python2.7 / site-packages / pyasn1-0.1.9-py2.7.egg-info

사이트 패키지가 어디에 있는지 확인하려면 :

python -m site

1
예상대로 작동합니다.
c1377554

-1

ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible. ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible. Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit Attempting uninstall: torch Found existing installation: torch 1.0.0 Uninstalling torch-1.0.0: Successfully uninstalled torch-1.0.0 Attempting uninstall: torchvision Found existing installation: torchvision 0.2.1 Uninstalling torchvision-0.2.1: Successfully uninstalled torchvision-0.2.1 Attempting uninstall: entrypoints Found existing installation: entrypoints 0.2.3 ERROR: Cannot uninstall 'entrypoints'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

그런 다음 입력합니다.

conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit

끝난!


1
콘솔 출력을 표시하는 대신 수행중인 작업과 이유를 설명하십시오.
Headhunter Xamd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.