일부 Python 패키지는 종속성으로 두 패키지 중 하나를 필요로합니다. 예를 들어 Ghost.py
은 PySide
또는 PyQt4
중 하나가 필요합니다.요구 사항 파일에 두 가지 종속성 중 하나만 필요합니다.
requirements.txt
파일에 이러한 종속성을 포함시킬 수 있습니까? 이 파일들과 함께 작동하는 '또는'연산자가 있습니까?
그렇지 않은 경우 이러한 요구 사항을 파일에 추가하여 그 중 하나만 설치하면됩니까?
일부 Python 패키지는 종속성으로 두 패키지 중 하나를 필요로합니다. 예를 들어 Ghost.py
은 PySide
또는 PyQt4
중 하나가 필요합니다.요구 사항 파일에 두 가지 종속성 중 하나만 필요합니다.
requirements.txt
파일에 이러한 종속성을 포함시킬 수 있습니까? 이 파일들과 함께 작동하는 '또는'연산자가 있습니까?
그렇지 않은 경우 이러한 요구 사항을 파일에 추가하여 그 중 하나만 설치하면됩니까?
현재 핏의 requirement.txt
도 setuptools도 직접 이러한 구성을 허용하지 않습니다. 둘 다 요구 사항 목록을 지정해야합니다. 요구 사항의 버전을 제한 할 수는 있지만 그게 전부입니다. 다음과 같이
내부 파이썬, 당신은이 상황을 처리 할 수
try:
import dependency1
def do_it(x):
return dependency1.some_function(x)
except ImportError:
try:
import dependency2
def do_it(x)
return dependency2.another_function(x)
except ImportError:
raise ImportError('You must install either dependency1 or '
+ 'dependecy2!')
지금 do_it
중 하나 dependency1.some_function
또는 dependency2.another_function
사용에 따라하는 것은 가능합니다.
그래도 요구 사항을 지정하는 방법에 대한 문제가 발생합니다.
requirements.txt
또는 setup.py
하지만 문서의 요구 사항을 지정하지 마십시오 : 나는 두 가지 옵션을 참조하십시오. 소프트웨어의 설정에서 추가 수동 단계가 필요한 경우 (예 : pip install my_tool
이상)이 방법을 사용할 수 있습니다.requirements.txt
또는 setup.py
으로 하드 코드하십시오.결국 사람들은 왜 하나의 종속성을 다른 것보다 사용하려고하는지 물어보아야합니다. (디스크 공간이 부족하기 때문에) 일반적으로 내가 사용하는 라이브러리의 종속성에 대해 신경을 쓰지 않아도됩니다. 싸고 (virtualenv로 인해) 비 호환성의 위험이 거의 없습니다. 따라서 동일한 기능에 대해 서로 다른 두 가지 종속성을 지원하지 않는다고 생각하는 것이 좋습니다.
pip install $(requirements.py)
:
나는
chmod +x requirements.py
으로이
#!/usr/bin/env python
packages = 'p1 p2 p3'.split()
try:
import optional1
except ImportError: # opt1 not installed
try:
import optional2
except ImportError: # opt2 not installed
packages.append('optional2')
print(' '.join(packages))
이 스크립트의 실행 파일을 가지고 수행 그리고 마지막으로 이런 식으로 핍을 실행하는 작은 파이썬 스크립트를 사용합니다 '$ (requirements.py)'는 requirements.py 스크립트를 실행하고 그 결과를 출력합니다 (이 경우에는 pac kages)를 설치하십시오.
흥미 롭습니다. 나는 당신이'pip'와 같은 구문을 사용할 수 있는지 몰랐습니다. –