2014-03-07 3 views
3

나는 이것을 얼마 동안 외우려고 노력했다. 나는 심지어 here이라는 질문을 시도했지만 오히려 나빴다. 그 이후로, 나는 조금 더 나아지고있는 것을 이해하게되었습니다. 나는 문제의 근본이 python setup.py [install|develop] 일 때, 핍보다 easy_install을 사용하여 의존성 (install_requires)을 충족 시키려고 시도한다고 믿는다.setup.py는 easy_install이 아닌 pip를 사용할 수 있습니까?

문제는 아니지만 이러한 종속성이 저장된 내 자신의 pypi 서버를 실행합니다. pip가 PIP_INDEX_URL 환경 변수를 사용하여 인덱스 서버를 사용하도록 지정할 수 있습니다. 이것은 pip install으로 배포 할 때 잘 작동하지만 개발 중에는 setup.py develop으로 설치하는 것이 편리합니다. 내가 말할 수있는 것부터 setup.py는 easy_install을 호출하고 pypi.python.org에서 내 패키지를 찾으려고이 환경 변수에 아무런주의를 기울이지 않는다. 커맨드 라인에서 easy_install을위한 인덱스 서버를 지정할 수는 있지만 setup.py에서 암묵적으로 호출 될 때는 그렇게 할 방법이 없다는 것을 알고 있습니다.

나는 pip가이 문제를 겪지 않는다는 사실에 더 혼란스러워합니다. 이 모듈 중 하나가 pip install 일 때 패키지 용 setup.py를 실행하지만 내 인덱스 서버에서 종속성을 선택합니다. setup.py가 직접 호출 할 때보 다 pip에서 실행될 때 다르게 동작하는 이유는 무엇입니까?

내 환경에서 사용할 pypi 서버 (예 : prod, test 또는 dev)를 결정하려면 setup.py에서 dependency_links를 지정하는 것은 좋은 답변이 아닙니다.

내 설정이 저에게 이상하지 않은 것처럼 보이므로 확실하게 다른 사람이이 문제를 해결했습니다.

답변

2

내가 직접 호출했을 때보 다 pip에서 실행할 때 setup.py가 다르게 동작하는 이유는 무엇입니까?

pipsetuptools는 래퍼이며 PIP_INDEX_URL 변수는 pip 특징이다. setup.py 파일은 PIP_INDEX_URL에 대해 알지 못하는 setuptools을 사용합니다.

내가 사용하는 것이 좋습니다 것입니다 :

PIP_INDEX_URL=http://yourpypi/ pip install . 

대신

python setup.py install 
+0

처음으로 서버에 준비하지 않고 pip를 통해 직접 설치할 수 있다는 것을 몰랐습니다. 이것은 위대합니다. @detly가 제안한 -e 옵션과 결합하면 완벽합니다. 둘 다 대단히 감사합니다! – zenzic

2

당신은 -e 플래그로 지정, PIP의 "editable install" option에 관심이있을 수 있습니다

"편집"을 설치합니다은 근본적 설치 "setuptools에 모드를 개발".

로컬 프로젝트의 경우 "SomeProject.egg-info"디렉토리가 프로젝트 경로를 기준으로 생성됩니다. 이것은 setup.py를 사용하는 것 이상의 장점 중 하나입니다. 현재의 작업 디렉토리와 직접적으로 "egg-info"를 생성합니다.

+0

감사합니다. 나는 그 기회를 줄 것이다. – zenzic

0

이 정말 난 아직도 setup.py 사용 핍을하기보다는하는 방법을 알고하지 않는 내 질문에 대답하지 않습니다 easy_install. 그러나, 나는 나의 문제에 대한 해결책을 찾았다. easy_install이 ~/.pydistutils 파일에 지정하여 원하는 인덱스 서버를 사용하게 할 수 있습니다. 예 :

[easy_install] 
index_url = http://pypi.my_domain.org/simple 
관련 문제