2014-12-15 3 views
12

의, 나의 프로젝트는이 경우, spam라는 패키지에 따라 달라집니다 프로젝트의 이름이 pyspam으로 변경되면 내 프로젝트는 spam 또는 pyspam에 종속됩니다.파이썬 내가 어느 패키지 A 또는 B 예를 들어</p> <p>에 의존 할 수있는 패키지가있는 상황 건너 수시로 많은 의존성

나는 setup.py에서 이러한 의존성을 어떻게 정의 할 것인지 (또는 찾을 수 없다). 이 문제를 해결하기 위해 일반적으로 받아 들여지는 방법은 무엇입니까?

편집 : setup.py에 종속성을 정의하고 싶습니다. 이런 식으로 뭔가 :

from setuptools import setup 

setup(
    name='myproject', 
    install_requires=[ 
     'spam || pyspam' 
    ] 
) 

답변

-3
try: 
    import ham 
except ImportError: 
    import spam 
2

당신은 패키지를 사용할 수 있는지 확인하고, 그 기반으로 사용할 결정할 수 있습니다. (나는 당신의 질문을 정확하게 이해하기를 바랍니다).

from setuptools import setup 

imp_spam = "spam" 
try: 
    import spam 
except: 
    imp_spam = "pyspam" 

setup(
    name='myproject', 
    install_requires=[imp_spam] 
) 
+1

정확히 무엇을 찾고 있습니다. 두 패키지가 설치되어 있지 않으면, 예제에'pyspam'이 설치되어 있습니다. 불행하게도 패키지가 존재하지 않는 (원격으로) 시나리오가 전혀 처리되지 않습니다. 이러한 경우 의존성이 대체로 작용할 수 있습니다. 이 답변은 대부분의 경우 작동하므로 +1이됩니다. – siebz0r

+0

글쎄, 그 중 하나를 선호하는 것으로 정의해야합니다. 맞습니까? 두 가지가 모두 누락 된 경우 다른 하나를 선호하도록 순서를 반대로하십시오. – bosnjak

+0

패키지가 아직 파이피 서버에 없으면 설치가 실패합니다. 대신 의존성을 만족시키기 때문에 다른 패키지를 가져 오려고 시도해야합니다. – siebz0r