2010-01-18 3 views

답변

12

당신은 두 가지 일을 할 필요가있다. 첫째, 당신이 원하는 정확한 버전, 예를 들어 필요합니다

install_requires = "useful.package==1.9dev-r1234" 

를하고 지정하는 dependency_links 설정을 포함 할 곳을 찾는 방법은 다음과 같습니다

dependency_links = ["svn://example.org/useful.package/[email protected]#egg=useful.package-1.9dev-r1234"] 

참고 dependency_links URL의 버전 #egg= 부분은 정확히해야은 (는) install_requires에 지정한 것과 일치합니다. 이 두 부분을 함께 연결하는 것입니다.

setuptools는 링크에서 #egg 태그를보고 해당 정확한 버전의 패키지에 사용할 수있는 다운로드 URL로 URL을 저장합니다. 그런 다음 나중에 해당 요구 사항을 해결하려고하면 정확한 SVN URL을 다운로드해야합니다.

(단, 이 실제로 일 때 대상 SVN 개정판은 실제로 해당 이름과 버전으로 달걀을 작성해야합니다. 그렇지 않으면 런타임에 종속성이 실패합니다. 의존하는 패키지는 기본 빌드 버전 번호로 SVN 수정 태그를 사용합니다.)

+1

그래, 그것은/진짜/일반적인 경우에 작동하지 않습니다 ... 난 그냥 지금 핍를 사용합니다. – joeforker

+0

실제로 "find_links"가 "dependency_links"가되어서는 안됩니까? –

+0

고마워요, 가브리엘. 나는 그것을 고쳤다. –

2

모호한 버전의 다른 패키지가 필요하고 다른 버전과 호환되지 않을 경우 해당 버전의 패키지를 다른 버전과 함께 배포하기 만하면됩니다. 필요한 경우 자신의 네임 스페이스에 넣어서 사용중인 버전인지 확인하십시오.

1

특정 버전의 패키지를 릴리스 할 수 있지만 함께 배포해야합니다. 표준 파이썬으로 자동으로 다운로드 할 수있는 방법은 없습니다.

그러나 Buildout을 사용하고 환경을 복제 할 수있는 buildout.cfg를 만들 수 있습니다. mr.developer와 같은 확장 기능을 사용하면 특정 버전을 체크 아웃하고 설치할 수 있습니다.

http://pypi.python.org/pypi/zc.buildout http://pypi.python.org/pypi/mr.developer

2

나는 setup.py에서이 참조 할 수 있지만 pip 간단한 요구 사항 파일과 파이썬 패키지의 특정 버전을 체크 아웃 할 수있는 방법을 생각하지 않았습니다. requires.txt이라는 요구 사항 파일을 사용하면 pip install -r requires.txt은 해당 파일에 나열된 모든 패키지 (및 해당 종속성)를 설치합니다.

여기 내 요구 사항 파일의 일부입니다. -e으로 시작하는 줄은 내 프로젝트를 포함하여 버전 관리 (git, svn 또는 mercurial)에서 패키지의 특정 버전을 체크 아웃하고 편집 가능한 형식으로 설치합니다. pip freeze은 설치된 모든 패키지를이 형식으로 나열합니다.

requires.txt는 :

-e hg+file:///home/me/my-private-project#egg=myproject 
-e hg+http://bitbucket.org/ianb/[email protected]#egg=WebOb 
-e svn+http://svn.sqlalchemy.org/sqlalchemy/[email protected]#egg=SQLAlchemy 
-e svn+http://svn.zope.org/repos/main/z3c.saconfig/[email protected]#egg=z3c.saconfig 
## The following requirements were added by pip --freeze: 
APScheduler==1.01 
simplejson==2.0.9 
... (many more) 
+0

편집 가능한 종속성을 갖고 싶습니까? –

+0

가끔 있습니다. – joeforker

관련 문제