2012-06-14 5 views
22

How can I make setuptools install a package that's not on PyPI?과 비슷한 질문이지만 동일하지는 않습니다.동일한 버전 번호의 pypi에서도 사용할 수있는 다른 소스에서 패키지를 설치하려면 어떻게해야합니까?

일부 패키지의 fork 된 버전을 사용하고 싶기 때문에 setuptools는 종속성 링크를 무시합니다 (동일한 버전 번호이므로).

dependency_links에서 링크를 강제로 사용할 수 있습니까? 또는 분기 된 버전에서 버전 번호를 변경하는 유일한 방법은 무엇입니까?

requires = [ 
    ... 
    'pyScss==1.1.3' 
    ... 

dependencies = [ 
    'https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3' 
] 

업데이트

이상한,이 패키지가 아직 설치되지 않은 필수 목록에서 하나의 경우 분명히 작동합니다. 누락 된 패키지가 또 있으면 pypi에서 다운로드합니다. 그 질문에 설명 된대로

+0

@IlyaBaryshev, 죄송하지만 업데이트에 설명 된 해결 방법 만 사용합니다. 모든 패키지를 설치/업데이트 한 다음이 특정 패키지를 제거한 다음 누락 된 패키지 만 제거합니다.이 경우 종속성에서 링크를 가져옵니다. – roberkules

+1

패키지를 제작하므로 옵션이 아닙니다. 내 패키지 내 모든 종속성을 벤더링하는 것에 대해 생각하고 있는데, 버그가있는 setuptools 동작을 고려한 유일한 옵션처럼 보입니다. –

+0

이것이 문제의 해결책 일 수 있습니까? http://stackoverflow.com/a/17442663/368102? – Heyl1

답변

9

내가 방금 dependency_links를 사용할 수 있다고 생각 :

from setuptools import setup 

setup(name = 'mypkg', 
    version = '0.0.1', 
    description = 'Foo', 
    author = 'bar', 
    author_email = '[email protected]', 
     install_requires = ['pyScss==1.1.3'], 
     dependency_links = [ 
     'https://github.com/nadavshatz/pyScss/zipball/master#egg=pyScss-1.1.3' 
     ] 
    ) 

사용 테스트 python setup.py develop

당신은 아마 포크 http://www.python.org/dev/peps/pep-0386/

외부의입니다 강조하기 위해 계란을 이름을 바꿀

setup.py는 로컬로 requirements.txtpip을 사용하여이를 시행 할 수 있습니다. 이렇게하면 패키지가 포크에 의존하지 않으므로 설치 방법으로 쉽게 문서화 할 수 있습니다.

+0

실제로 그게 내가하고있는 ...'setup' 호출에서'install_requires = requires'와'dependency_links = dependencies'를 전달합니다. 기본적으로 귀하와 동일한 코드입니다. – roberkules

6

stackoverflow.com/a/17442663/368102에 답과 매우 유사한 작업을 수행했습니다.

PyPi에서 다른 requests-file 패키지와 이름 충돌하는 requests-file github 패키지가 필요합니다. 둘 다 버전 1.0이고, PyPi 버전에는 몇 가지 상위 버전이 있습니다.

ias_tools/setup.py의 해결 방법은 다음과 같습니다 : 나는 너무 걱정하지 않아요

% pip install --process-dependency-links ./ias_tools 
You are using pip version 6.0.6, however version 6.1.1 is available. 
You should consider upgrading via the 'pip install --upgrade pip' command. 
Processing ./ias_tools 
    DEPRECATION: Dependency Links processing has been deprecated and will be removed in a future release. 
Collecting requests-file<=99.99 (from ias-tools==0.1) 
    Downloading https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip 
Requirement already satisfied (use --upgrade to upgrade): requests>=1.1.0 in ./venv/lib/python2.7/site-packages (from requests-file<=99.99->ias-tools==0.1) 
Installing collected packages: ias-tools, requests-file 
    Running setup.py install for ias-tools 
    Running setup.py install for requests-file 
Successfully installed ias-tools-0.1 requests-file-1.0 

: 그래서 나는 또한 --process-dependency-links을 사용했다

내 경우
setup(
    ... 
    install_requires=[ 
     'requests-file<=99.99', 
    ], 
    dependency_links=[ 
     'https://github.com/jvantuyl/requests-file/archive/b0a7b34af6e287e07a96bc7e89bac3bc855323ae.zip#egg=requests-file-99.99' 
    ] 
) 

, 나는 pip을 사용하고 있습니다 사용 중단 알림에 대해서는 a pull request was submitted to pip으로, 사용 중지 예정인 경우에는 discussion about it 이후로합니다.

+0

내 빌드 명령은'pip install --upgrade -e.'- process-dependency-links'를 추가해야했습니다. 그 정보를 포함 해 주셔서 감사합니다. –