distutils를 사용하여 설치된 Python 패키지를 어떻게 제거합니까?
Python 설치에서 디렉토리를 간단히 삭제할 수 있습니까? 아니면 삭제해야하는 느린 파일이 있습니까?
전달하는 옵션 install
과 시스템 / 패키지에있는 distutils 구성 파일 의 내용에 따라 다릅니다 . 이러한 방식으로 지정된 디렉토리 외부에서 파일이 수정되었다고 생각하지 않습니다.
특히 distutils에는 현재 제거 명령이 없습니다 .
또한 패키지 / 달걀을 삭제하면 종속성 문제가 발생할 수 있습니다 easy_install
. 이러한 문제를 완화하려는 시도 와 같은 유틸리티가 있습니다.
삭제해야하는 세 가지 설치 항목은 다음과 같습니다.
- 패키지 / 모듈
- 스크립트
- 데이터 파일
이제 내 Linux 시스템에서 다음 위치에 있습니다.
- /usr/lib/python2.5/site-packages
- / usr / bin
- / usr / share
그러나 Windows 시스템에서는 전적으로 Python 배포 디렉토리 내에있을 가능성이 더 큽니다. 나는 리눅스 패턴을 따르는 것이 더 쉽다는 것을 제외하고는 OSX에 대해 전혀 모른다.
또 다른 타임 스탬프 기반 해킹 :
- 앵커 만들기 :
touch /tmp/ts
- 제거 할 패키지를 다시 설치하십시오.
python setup.py install --prefix=<PREFIX>
- 앵커 파일보다 최신 파일을 제거합니다.
find <PREFIX> -cnewer /tmp/ts | xargs rm -r
예, distutils가 설치 한 모든 것을 삭제하는 것이 안전합니다. 설치된 폴더 또는 .egg 파일에 적용됩니다. 당연히 해당 코드에 의존하는 것은 더 이상 작동하지 않습니다.
다시 작동하게하려면 다시 설치하면됩니다.
그건 그렇고, distutils를 사용하는 경우 다중 버전 기능을 사용하는 것도 고려하십시오. 단일 패키지의 여러 버전을 설치할 수 있습니다. 즉, 단순히 최신 버전을 설치하려는 경우 패키지의 이전 버전을 삭제할 필요가 없습니다.
이것이 테스트 및 / 또는 개발 목적인 경우 setuptools 에는 변경할 때마다 업데이트 하는 개발 명령이 있습니다 (따라서 변경할 때마다 제거하고 다시 설치할 필요가 없음). 이 명령을 사용하여 패키지를 제거 할 수도 있습니다.
이것을 사용하면 스크립트 로 선언하는 모든 것이 느린 파일로 남게됩니다.
우분투 12.04에서 기본적으로보아야 할 유일한 장소는
/usr/local/lib/python2.7/
그리고 연관된 폴더와 파일이 있으면 제거하십시오!
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에서 테스트되었습니다.
Windows의 Python :
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
방금 파이썬 패키지를 제거했고 완벽하게 수행했는지 확신 할 수 없지만 합리적으로 확신합니다.
내 패키지의 모든 파일이 어느 정도 동일한 타임 스탬프를 가지며 다른 파일은 없을 것이라는 가정하에 모든 파이썬 관련 파일 목록을 날짜순 으로 가져 오는 것으로 시작했습니다 .
Luckily, I've got python installed under /opt/Python-2.6.1
; if I had been using the Python that comes with my Linux distro, I'd have had to scour all of /usr
, which would have taken a long time.
Then I just examined that list, and noted with relief that all the stuff that I wanted to nuke consisted of one directory, /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/
, and one file, /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info
.
So I just deleted those.
Here's how I got the date-sorted list of files:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(I think that's got to be GNU "find", by the way; the flavor you get on OS X doesn't know about "-printf '%T@'")
I use that all the time.
For Windows 7,
Control Panel --> Programs --> Uninstall
, then
choose the python package to remove.
On Mac OSX, manually delete these 2 directories under your pathToPython/site-packages/ will work:
- {packageName}
- {packageName}-{version}-info
for example, to remove pyasn1, which is a distutils installed project:
- rm -rf lib/python2.7/site-packages/pyasn1
- rm -rf lib/python2.7/site-packages/pyasn1-0.1.9-py2.7.egg-info
To find out where is your site-packages:
python -m site
'program tip' 카테고리의 다른 글
현재 클래스 / 메서드 이름을 반환하는 함수가 있습니까? (0) | 2020.09.07 |
---|---|
Numpy 배열의 열을 반복하는 방법은 무엇입니까? (0) | 2020.09.07 |
중괄호로 묶인 이니셜 라이저는 언제 사용합니까? (0) | 2020.09.06 |
클로저는 언제 Fn, FnMut 및 FnOnce를 구현합니까? (0) | 2020.09.06 |
Windows Phone 7 에뮬레이터에서 TextBox.TextChanged 이벤트가 두 번 발생합니다. (0) | 2020.09.06 |