개발 모드에서 설치된 Python 모듈 제거


92

안녕하세요 저는 setuptools를 사용하여 파이썬 패키징을 시도하고 테스트를 위해 개발 모드에서 모듈을 설치했습니다. 즉

python setup.py develop

이것은 내 모듈 디렉토리를 sys.path에 추가했습니다. 이제 모듈을 제거하고 싶습니다. 이렇게 할 수있는 방법이 있습니까?

미리 감사드립니다


4
pipPython 패키지 관리를위한 제거 기능이있는 또는 다른 관리자를 사용 하십시오.
Tomasz Wysocki

1
@Tomasz python setup.py developwith와 동등한 작업을 어떻게합니까 pip?
akaihola

7
pip install -e.
Tomasz Wysocki 2011

11
'pip'는이 질문에 대한 정답이 아닙니다. 실행하거나 사용하기 위해 'pip'를 사용하여 개발중인 프로젝트를 설치하면 소스 코드를 수정할 때마다 다시 설치해야합니다. 올바른 방법은 원래 질문에서 설명한대로 'setup.py develop'을 사용하는 것입니다.
Jonathan Hartley

6
@JonathanHartley 그것은 단지 명백한 거짓입니다; pip에는 setuptools '와 거의 동일하게 작동 하는 --editable(또는 -e) 인수가 있습니다. 나는 그것이 귀하의 의견보다 더 새로운 것이라고 생각 했지만, 아닙니다. GitHub의 pip 저장소를 빠르게 검색하면 2009 년에 커밋에서 편집 가능 항목에 대한 참조가 나타납니다. 게다가 Tomasz Wysocki가 주석을 달기 전에 이미 지적했음을 알 수 있습니다. ! develop--editable
Mark Amery

답변:


224

--uninstall또는 -u옵션을 사용하여 develop, 즉 :

python setup.py develop --uninstall

easy-install.pth에서 제거되고 .egg-link가 삭제됩니다. 하지 않는 유일한 일은 스크립트를 삭제하는 것입니다 (아직).


3
개발 버전이 일부 실행 파일을 설치하고에서 변경 한 setup.py경우 수동으로 제거해야합니다.
norok2

1
설명 된대로 실행하고 출력에 오류가 없지만 여전히 내 개발 패키지를 전역으로 가져올 수 있으며 제거되지 않은 것 같습니다. 편집 : 나는 왜 내가 --user설치하는 동안했던 것과 같이 옵션으로 그것을 실행해야했는지 안다 :python setup.py develop --uninstall --user
Marek

모듈의 이름을 변경하는 등의 작업이 변경 될 수 있으므로 이것이 안전하다고 생각하지 않습니다. 모든 것을 수동으로 제거해야합니다.
mathtick

@ norok2 실행 파일을 제거하기 위해 실행해야하는 수동 명령은 무엇입니까? 내가 아는 한 위의 내용은 특정 버전의 python / pip에서 작동하지만 어떤 버전인지 확실하지 않습니다.
Charlie Parker

1
@CharlieParker rm또는 delOS에 따라 다릅니다. 내가 의미하는 것은 당신이 당신에 (또는 제거) 설치 한 후 자신의 이름을 변경할 때 일부 실행 파일이 있다면 것입니다 setup.py, 다음 setup.py더 이상 어떤 (더 당신의 문제가 그들에 대해 알고하지 않습니다 pip/의 python버전과 당신이 그들을 돌볼 필요 일반적 bin으로 POSIX (리눅스, BSD, MacOS X 읽기) 시스템의 일부 디렉터리에 있으며 Win에 대해 기억할 수 없습니다.
norok2

16

site-packages 디렉토리에서 easy-install.pth를 편집하고 해당 패키지의 개발 버전을 가리키는 행을 제거하십시오.


네, 정확히이 작업을했고 하나 이상의 파일이 package-egg-link라는 이름으로 거기에 있었거나 제가 제거하고 이제 모듈에 대한 참조가 제거되었습니다. 감사합니다 :)
copyninja

10
"--uninstall을 개발할 수있는 setup.py"pjeby의 답변을 @ 참조, 당신을 위해이 작업을 수행
조나단 하틀리

3
develop --uninstall프로젝트를 두 개로 분할하고 잘못된 프로젝트가 원래 디렉토리에 남아 있었기 때문에 실패 했을 때 이것은 저에게 효과적이었습니다.
Wesley Baugh 2013 년

1

나는 전에 이것과 비슷한 문제가 있었다. 내가 한 일은 Python 셸을로드하고 모듈을 가져온 다음 __file__속성 을 인쇄하는 것입니다. 거기에서 연결된 폴더 나 파일을 제거합니다.

살펴보고 싶은 것은 virtualenv 를 사용하는 것입니다.이 시스템을 사용하면 시스템과 별도로 Python 인스턴스를 만들 수 있습니다. 이 인스턴스에서 설치하거나 사용하는 모든 모듈은 모듈 버전을 포함하여 자체 포함됩니다.

이제 모든 프로젝트를 자체 포함 된 virtualenv 안에 보관하므로 다른 프로젝트의 모듈을 망칠 염려없이 원하는 모듈을 설치하고 사용할 수 있습니다.


다음에 패키지로 플레이 할 때부터 이것을 사용하여 시스템 Python을 망치지 않을 것입니다. 정보 주셔서 감사합니다
copyninja
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.