Programing

python 버전에 따라 requirements.txt

crosscheck 2020. 10. 30. 07:45
반응형

python 버전에 따라 requirements.txt


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

참고 URL : https://stackoverflow.com/questions/19559247/requirements-txt-depending-on-python-version

반응형