SYSTEM$RESOLVE_PYTHON_PACKAGES

SYSTEM$RESOLVE_PYTHON_PACKAGES

SYSTEM$RESOLVE_PYTHON_PACKAGES는 지정한 Python 패키지에 대한 해석된(resolved) 의존성과 그 버전 목록을 반환하는 시스템 함수예요. Anaconda와 Artifact Repository(PyPI)의 패키지 모두에서 작동해요.

출처: Snowflake SQL Reference

본문

카테고리: System 함수 (System functions)

구문 (Syntax)

SYSTEM$RESOLVE_PYTHON_PACKAGES( '<python_version>', '<package_spec_string>', ['<artifact_repository_name>'] )

인자 (Arguments)

<python_version> — Python 런타임 버전을 지정하는 문자열(예: '3.12')이에요.

<package_spec_string> — PACKAGES 절 형식의 패키지 사양(예: $$('numpy>=1.20.0', 'pandas==1.3.0')$$)이에요. $$()$$를 사용해 기본 패키지(Python 런타임과 그 의존성)만 반환할 수 있어요.

<artifact_repository_name> — 선택적. 아티팩트 저장소 이름을 지정하는 문자열(예: 'snowflake.snowpark.pypi_shared_repository')이에요. 제공되지 않거나 비어 있으면 기본 Anaconda 저장소를 사용해요.

반환값 (Returns)

해석된 패키지와 그 의존성을 담은 JSON 배열을 반환해요. 배열의 각 요소는 <package_name>==<version_name> 형식의 문자열이에요. 결과는 항상 기본 패키지(예: Python 런타임과 시스템 라이브러리)를 포함해요.

접근 제어 요구 사항 (Access control requirements)

이 함수는 모든 사용자가 호출할 수 있어요. 특별한 권한이 필요하지 않아요.

사용 시 유의사항 (Usage notes)

  • Anaconda 패키지에서만 작동하는 SHOW_PYTHON_PACKAGES_DEPENDENCIES와 달리, SYSTEM$RESOLVE_PYTHON_PACKAGES는 Anaconda와 Artifact Repository(PyPI)의 패키지 모두에서 작동해요.
  • 이 함수는 패키지 의존성을 해석하기 위해 내부적으로 임시 UDF를 만들고 자동으로 정리해요.
  • 패키지 정책에 포함될 패키지에 대한 모든 의존성을 결정해야 할 때 이 함수를 사용해요.

예시 (Examples)

예시 1: Anaconda에서 패키지 해석

다음 예시는 기본 Anaconda 저장소에서 Python 3.12 런타임으로 numpy와 pandas Python 패키지의 의존성 목록을 반환해요:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$('numpy>=1.20.0', 'pandas==1.3.0')$$);

결과는 의존성과 그 버전의 목록이에요:

["_libgcc_mutex==0.1", "_openmp_mutex==5.1", "blas==1.0", "ca-certificates==2024.9.24",
"intel-openmp==2023.1.0", "libffi==3.4.4", "libgcc-ng==11.2.0", "numpy==1.24.3",
"pandas==1.5.3", "python==3.12.20", "readline==8.2", "sqlite==3.45.3", ...]

예시 2: Artifact Repository(PyPI)에서 패키지 해석

다음 예시는 PyPI 아티팩트 저장소에서 scikit-learn 패키지를 해석해요:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$('scikit-learn')$$, 'snowflake.snowpark.pypi_shared_repository');

예시 3: 기본 패키지만 가져오기

다음 예시는 Python 3.12의 기본 패키지만 반환해요:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$()$$);

결과에는 Python 런타임과 시스템 의존성이 포함돼요:

["_libgcc_mutex==0.1", "ca-certificates==2024.9.24", "libffi==3.4.4",
"openssl==3.0.15", "python==3.12.20", "readline==8.2", ...]

더 알아보기