파이썬 setup.py 개발 대 설치


336

setup.py에서 두 가지 옵션 developinstall나를 혼동하고 있습니다. 이 사이트develop따르면를 사용 하면 site-packages 디렉토리에 대한 특수 링크가 작성됩니다.

사람들은 python setup.py install새로 설치하고 python setup.py develop설치 파일을 변경 한 후에 사용하도록 제안했습니다 .

누구든지이 명령의 사용법을 밝힐 수 있습니까?

답변:


468

python setup.py install 직접 개발 / 수정 / 디버그하지 않을 패키지 (일반적으로 타사)를 설치하는 데 사용됩니다.

자신의 것을 위해 먼저 패키지를 설치 한 다음 매번 패키지를 다시 설치 하지 않고도 코드를 자주 편집 할 수 있기를 원합니다 . 패키지를 python setup.py develop설치합니다 (일반적으로 소스 폴더). 코드를 (가상) 환경에 설치 한 후 편리하게 코드를 편집하고 변경 사항을 즉시 적용 할 수있는 방식으로.

그것은 매우 사용을 권장합니다 pip install .(설치) 및 pip install -e .호출로, 패키지를 설치 (개발자 설치) setup.py등의 풀 prereleases와 호환되지 않는 패키지 버전과 많은 종속성에 대한 잘못된 일을 할 것입니다 직접, 또는으로 제거 하드 패키지를 만들 pip.


81
에릭이 맞아 알아두면 유용한 정보는 해킹을 마쳤을 때 사용할 수 setup.py develop있는 --uninstall옵션 과 함께 제공됩니다 .
Philadams

5
마지막으로 여기에 생각에 또 다른 옵션이다 setup.py develop파이썬 패키지에 해킹 할 때 다시 "간단한 (하지만 명시 적) 경로 수정이 제대로 패키지를 해결하기 위해"사용하는 것입니다 케네스 리츠
philadams

4
python setup.py develop지역 개발을 위해 Ceilometer를 설정하려고 할 때 문제가 발생했습니다. 내가 사용하는 결국 pip install -e PATH피하기 위해 (A VIRTUALENV 이내) 를 통해 자른 문제easy_install .
Joe D' Andrea

1
이것이 중요한지 확실하지 않지만 파이썬 3 등을 사용하는 경우 python setup.py develop다르게 실행해야 합니까?
Charlie Parker

1
그것은 python3과 함께 작동하지만 현재 충돌하는 pip 설치를 제거하는 것을 잊지 마십시오 (함께 충돌했습니다).
Léo Germond

124

로부터 문서 . 이 develop패키지를 설치하지 않습니다하지만이 생성됩니다 .egg-link프로젝트 소스 코드 디렉토리에 배포 디렉토리 뒤에.

따라서 설치와 비슷하지만 복사하는 대신 site-packages심볼릭 링크를 추가합니다 ( .egg-link멀티 플랫폼 심볼릭 링크로 작동).

이렇게 하면 약간만 변경할 때마다 다시 설치 하지 않고도 소스 코드를 편집하고 변경 사항을 직접 확인할 수 있습니다. 이것은 프로젝트의 개발자 인 경우에 유용합니다 develop. 다른 사람의 패키지를 설치하는 경우 사용해야합니다install


24

사람들 이이 develop방법을 사용할 때 유용 할 수있는 또 다른 것은 --usersudo없이 설치 하는 옵션입니다. 전의:

python setup.py develop --user

대신에

sudo python setup.py develop

11
IIUC 당신은 setup.py develop당신의 시스템에 있어서는 안되며 , 이것은 virtualenv에서만 의미가 있습니다.
splitbyzero

2
@dividebyzero python setup.py develop --user내가 올바르게 이해한다면 항상 사용해야한다는 것을 의미 합니까? 또한, 패키지를 사용하여 패키지가 설치된 위치를 알려주시겠습니까 python setup.py develop --user? 감사!
ROBOT AI

2
나는 --user홈 계정의 디렉토리에 설치되며 시스템의 다른 사용자에게는 영향을 미치지 않을 것이라고 생각합니다 . 은 develop실제로 모든 것을 복사하는 대신 프로젝트 소스 디렉토리에 대한 링크를 만들 것입니다. develop --user확인 develop하고 virtualenv에도 있어야합니다 . develop프로젝트 소스 코드의 개인 사본에서 프로젝트를 가리키는 무언가를 사용하는 다른 사용자가있을 수 있기 때문에 실제 시스템 에만 이상합니다.
splitbyzero

4
많은 (대부분의) 사람들이 다중 사용자 시스템에서 실행되고 있지 않습니다.
patstew

1
@boatcoder, Mac 및 Linux (및 Windows)는 다중 사용자 지원 시스템 일 수 있지만 개발자는 데스크탑의 유일한 (실제) 사용자 계정 일 가능성이 큽니다.
MestreLion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.