Python용 SCM 통합 지원
운영 체제 전용이며 Linux에서 지원되지 않는 Python 패키지는 Snyk SCM 스캔과 호환되지 않아 오류가 발생할 수 있습니다.
프로젝트를 스캔하려면 리포지토리에 지원되는 매니페스트 파일이 포함되어 있는지 확인해야 합니다.
Git 프로젝트에서 Python 버전 설정
Git에서 가져온 Pip 프로젝트를 스캔할 때, Snyk은 조직 설정 또는 .snyk 파일에 지정된 Python 버전을 사용합니다.
조직에 대해 올바른 Python 버전을 지정하는 것이 중요합니다. 이는 프로젝트 스캔에 사용되는 종속성 버전에 영향을 줄 수 있기 때문입니다.
Snyk은 지원되는 각 minor 버전에 대해 최신 patch 버전을 사용합니다.
기본적으로 Snyk은 Python 3.7을 사용하여 Pip 프로젝트를 테스트합니다.
더 높은 버전의 Python이 필요한 종속성이 있는 프로젝트의 가져오기, 재테스트 및 PR 검사 동작은 지정된 버전에 따라 달라집니다:
Python 3.8 이상: 스캔이 실패하며, 첫 번째로 실패한 패키지의 세부 정보, 해당 패키지가 요구하는 Python 버전 및 사용된 Python 버전이 포함된 에러 메시지가 표시됩니다.
Python 2.7 또는 3.7: 스캔은 성공하지만 호환되지 않는 종속성은 결과에서 누락됩니다.
Git에서 가져온 Pip 프로젝트를 테스트할 때 Snyk이 사용할 Python 마이너 버전을 정의하려면 조직 설정 및 .snyk 정책 파일을 사용할 수 있습니다.
조직의 모든 프로젝트에 대해 Python 버전을 정의하려면:
Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.
Settings > Snyk Open Source를 선택합니다.
Python에 대한 Edit settings를 선택합니다.
Python version 드롭다운에서 이 조직의 프로젝트를 테스트할 때 사용할 Python 버전을 선택합니다.

조직 내의 특정 프로젝트에서 다른 Python 버전을 사용해야 하는 경우, 프로젝트 리포지토리에 .snyk 파일을 추가하고 원하는 버전을 지정할 수 있습니다.
.snyk 파일은 프로젝트 매니페스트 파일과 동일한 디렉토리에 있어야 합니다.
Snyk은 .snyk 파일에 지정된 major, minor 및 patch 버전에 따라 사용할 Python 버전을 선택합니다.
Major버전만 지정된 경우 (예: 2 또는 3): 기본minor버전인 2.7 또는 3.7로 스캔됩니다.Major및minor버전이 지정된 경우 (예: 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14): 해당 버전(3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 또는 3.14)으로 스캔됩니다.Major,minor및patch버전이 지정된 경우 (예: 3.8.x, 3.9.x, 3.10.x, 3.11.x, 3.12.x, 3.13.x): 특정patch버전은 무시되며, 프로젝트는 3.8, 3.9, 3.10, 3.11, 3.12, 3.13 또는 3.14의 기본 버전으로 스캔됩니다.지원되지 않는
minor버전으로 지정된 경우: 기본값인 2.7 또는 3.7이 사용됩니다.
SCM 리포지토리 및 Pip
다음 종속성은 지원되지 않으며 파일을 스캔하기 전에 제거됩니다. 나머지 종속성은 스캔에 포함됩니다.
비공개 PyPI 리포지토리
requirements.txt파일 내의file://, 일반 URL, 상대 경로 및 일반적인 URI--index-url,-i,--extra-index-url을 통한 다른 패키지 인덱스 설정--find-links,-f를 통한 종속성 아카이브 위치 지정--editable,-e를 통한 에디터블 모드(editable mode) 종속성 설치--constraint,-c를 통한 버전 제약 조건 파일 사용--requirement,-r을 통한 다른 요구 사항 파일 포함특정 패키지: Python 2.7 및 3.7용
virtualenv및pip
다운로드된 종속성의 총합이 10GB를 초과하는 프로젝트는 지원되지 않습니다.
Pip 프로젝트를 스캔하기 위해, Snyk은 격리된 Linux 환경에서 네이티브 pip 도구를 사용하여 requirements.txt 파일을 분석합니다.
SCM 통합을 사용하여 스캔된 Pip 프로젝트에는 해당 프로젝트가 위치한 디렉토리와 동일한 이름이 부여됩니다.
Snyk은 **/*req*.txt 패턴을 따르는 모든 파일을 가져옵니다. 이는 requirements.txt 파일의 이름을 requirements-dev.txt 등으로 변경한 경우에 도움이 됩니다.
Snyk은 또한 **/requirements/*.txt 패턴을 사용하는 파일을 찾습니다. 이는 파일을 requirements 폴더(예: requirements/requirements.txt)에 둔 경우에 도움이 됩니다.
requirements.txt와 다른 매니페스트 파일 형식을 생성하는 패키지 관리자를 사용하는 경우, 매니페스트 파일을 requirements.txt 형식으로 변환하거나 내보낼 수 있습니다.
다음은 dephell을 사용하여 Conda environments.yml을 requirements.txt로 변환하는 예시입니다.
SCM 리포지토리 및 Poetry
Poetry v1 및 v2가 지원됩니다.
Poetry 프로젝트를 스캔하기 위해 Snyk은 pyproject.toml 및 poetry.lock 파일을 검사합니다.
Snyk이 Poetry 프로젝트를 스캔할 때 개발 종속성(dev dependencies)을 포함할지 여부를 선택할 수 있습니다.
Snyk은 암시적인 main 그룹인 tool.poetry.dependencies에 선언된 항목을 비개발 종속성으로 간주합니다. 그 외의 모든 항목은 개발 종속성으로 분류됩니다.
Poetry 개발 종속성은 기본적으로 스캔에 포함되지 않습니다. 이를 변경하려면 다음과 같이 설정을 수정하십시오:
Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.
Settings > Languages를 선택합니다.
Python에 대한 Edit settings를 선택합니다.
Poetry dev dependencies 설정 아래의 Scan Poetry dev dependencies 옵션을 활성화하거나 비활성화합니다.

SCM 리포지토리 및 Pipenv
비공개 PyPI 미러는 지원되지 않습니다. 비공개 미러를 유일한 소스로 지정하는 Pipfile은 가져오지 않습니다.
Pipenv 프로젝트를 스캔하기 위해, Snyk은 격리된 Linux 환경에서 네이티브 pipenv 도구를 사용하여 Pipfile 및 Pipfile.lock 파일을 분석합니다.
비공개 리포지토리의 패키지 및 Linux 이외의 OS 요구 사항이 있는 패키지는 해결되지 않을 수 있으며 종속성 트리에서 누락될 수 있습니다.
Pipfile.lock이 있는 경우, 해결되지 않은 패키지는 락 파일의 버전을 사용하여 종속성 트리의 최상위 레벨에 추가됩니다.
Snyk이 Pipenv 프로젝트를 스캔할 때 [dev-packages]에 지정된 종속성을 포함할지 여부를 선택할 수 있습니다.
Pipenv 개발 종속성은 기본적으로 스캔에 포함되지 않습니다. 이를 변경하려면 다음과 같이 설정을 수정하십시오:
Snyk 계정에 로그인하고 관리하려는 관련 그룹 및 조직으로 이동합니다.
Settings > Languages를 선택합니다.
Python에 대한 Edit settings를 선택합니다.
Pipenv 설정 아래의 Scan Pipenv dev dependencies 옵션을 활성화하거나 비활성화합니다.

Last updated