6을 사용하여 python2 패키지를 python3 (내 소유가 아님)로 이식하여 두 패키지 모두와 호환되도록 시도하고 있습니다. 그러나 requirements.txt에 나열된 패키지 중 하나는 이제 python3 stdlib에 포함되어 있으며 pypi 버전은 python3에서 작동하지 않으므로 조건부로 제외하고 싶습니다. setup.py에서이 작업을 수행하는 것은 쉽습니다. 다음과 같이 할 수 있습니다.
if sys.version_info[0] == 2:
requirements += py2_requirements
else:
requirements += py3_requirements
하지만 requirements.txt가 올바른 목록을 반영하도록하고 싶습니다. pip 문서에서 이것에 대해 아무것도 찾을 수 없습니다. 그렇게하는 방법을 아는 사람이 있습니까? 아니면 가능하다면?
답변
당신이 사용할 수있는 환경 마커를 이를 달성하기 위해 requirements.txt
이후 pip 6.0
:
SomeProject==5.4; python_version < '2.7'
SomeProject; sys_platform == 'win32'
다음에서 추가 요구 사항을 선언하여 setuptools에서도 지원됩니다 setup.py
.
setup(
...
install_requires=[
'six',
'humanize',
],
extras_require={
':python_version == "2.7"': [
'ipaddress',
],
},
)
요구 사항 지정자를 참조하십시오 . 그리고 문자열 파이썬 명령을 해당의 문자열 버전.
답변
여러 요구 사항 파일을 생성하고 이러한 공통 패키지를 공통 파일에 넣고 다음을 사용하여 다른 pip 요구 사항 파일에 포함 할 수 있습니다. -r file_path
requirements/
base.txt
python2.txt
python3.txt
python2.txt :
-r base.txt
Django==1.4 #python2 only packages
python3.txt :
-r base.txt
Django==1.5 #python3 only packages
pip install -r 요구 사항 /python2.txt