SYSTEM$RESOLVE_PYTHON_PACKAGES
SYSTEM$RESOLVE_PYTHON_PACKAGES
SYSTEM$RESOLVE_PYTHON_PACKAGES는 지정한 Python 패키지에 대한 해석된(resolved) 의존성과 그 버전 목록을 반환하는 시스템 함수예요. Anaconda와 Artifact Repository(PyPI)의 패키지 모두에서 작동해요.
본문
카테고리: 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", ...]
더 알아보기
- SHOW_PYTHON_PACKAGES_DEPENDENCIES — Anaconda 패키지에 대한 의존성만 반환(ACCOUNTADMIN 역할 필요)
- 패키지 정책 — Python용 패키지 정책
- 서드파티 패키지 사용 — UDF에서 Python 패키지 사용