기존 Python 패키지 업로드¶
Snowflake CLI 를 사용하면 snow snowpark package
명령을 사용하여 기존 Python 패키지를 Snowpark 가져오기에 추가할 수 있습니다. 함수 및 프로시저에 PyPi에서 이미 구현된 패키지를 사용할 수 있습니다.
Snowpark 가져오기에 Python 패키지를 추가하려면 다음을 수행합니다.
패키지가 이미 사용 가능한지 확인합니다¶
패키지가 이미 사용 가능한지 확인하려면 snow snowpark package lookup
명령을 사용합니다.
다음 예제는 Snowflake Anaconda 채널에서 이미 사용 가능한 패키지를 찾는 방법을 보여줍니다.
snow snowpark package lookup numpy
Package `numpy` is available in Anaconda. Latest available version: 1.26.4.
Snowflake Anaconda 채널에서 패키지를 이용할 수 없는 경우 다음과 유사한 메시지가 표시될 수 있습니다.
snow snowpark package lookup july
Package `july` is not available in Anaconda. To prepare Snowpark compatible package run:
snow snowpark package create july
자세한 내용은 Snowpark 패키지 조회 명령을 참조하십시오.
패키지 다운로드 및 Snowflake 아티팩트 만들기¶
패키지를 다운로드하고 업로드할 Snowflake 아티팩트를 생성하려면 snow snowpark package create
명령을 사용합니다.
snow snowpark package create <name>
여기서,
<이름>
은 패키지 이름, 패키지의 URL, 로컬 파일 경로 등pip
에서 지원하는 모든 요구 사항 지정자일 수 있습니다.
추가 옵션:
--allow-shared-libraries
:pip
를 통해 설치된 패키지를 사용할 때 공유(.so
/.dll
) 라이브러리를 허용합니다.--ignore-anaconda
: Snowflake Anaconda 채널에서 패키지를 조회하지 않습니다.--index-url
: 패키지 조회에 사용할 Python 패키지 인덱스의 기본 URL을 지정합니다. 이 URL은 PEP 503을 준수하는 리포지토리(단순 리포지토리 API) 또는 동일한 형식으로 배치된 로컬 디렉터리를 가리켜야 합니다.--skip-version-check
: 요구 사항과 Anaconda 간의 종속성 버전 비교를 건너뜁니다.
다음 예제는 Snowflake 아티팩트를 만드는 몇 가지 다양한 상황을 보여줍니다.
예: Anaconda 종속성이 있는 패키지 생성¶
이 예제는 스테이지에 업로드할 수 있고 나중에 Snowpark Python 앱에서 가져올 수 있는 Python 패키지를 zip 파일로 생성합니다. “july” 패키지에 대한 종속성은 Anaconda 채널에 있으므로 .zip
파일에서 제외되었습니다. 이 명령은 Snowpark 프로젝트의 requirements.txt
에 포함해야 할 패키지를 표시합니다.
snow snowpark package create july==0.1
Package july.zip created. You can now upload it to a stage using
snow snowpark package upload -f july.zip -s <stage-name>`
and reference it in your procedure or function.
Remember to add it to imports in the procedure or function definition.
The package july==0.1 is successfully created, but depends on the following
Anaconda libraries. They need to be included in project requirements,
as their are not included in .zip.
matplotlib
numpy
예: --ignore-anaconda
옵션을 사용하여 패키지 만들기¶
이 예제에서는 requirements.txt
파일에 종속성을 추가할 필요 없이 Snowpark 프로젝트에서 사용할 수 있는 july.zip
패키지를 생성합니다. 오류 메시지는 일부 패키지에 공유 라이브러리가 포함되어 있음을 나타내며, 이는 윈도우를 사용하여 패키지를 만드는 경우와 같이 동작하지 않을 수 있습니다.
snow snowpark package create july==0.1 --ignore-anaconda --allow-shared-libraries
2024-05-09 15:34:02 ERROR Following dependencies utilise shared libraries, not supported by Conda:
2024-05-09 15:34:02 ERROR contourpy
numpy
pillow
kiwisolver
matplotlib
fonttools
2024-05-09 15:34:02 ERROR You may still try to create your package with --allow-shared-libraries, but the might not work.
2024-05-09 15:34:02 ERROR You may also request adding the package to Snowflake Conda channel
2024-05-09 15:34:02 ERROR at https://support.anaconda.com/
Package july.zip created. You can now upload it to a stage using
snow snowpark package upload -f july.zip -s <stage-name>`
and reference it in your procedure or function.
Remember to add it to imports in the procedure or function definition.
예: Snowflake Anaconda 채널에서 이미 사용 가능한 패키지 만들기¶
이 예제는 이미 패키지가 존재하기 때문에 패키지를 만들 수 없습니다. --ignore-anaconda
옵션을 사용하여 패키지를 강제로 생성할 수도 있습니다.
snow snowpark package create matplotlib
Package matplotlib is already available in Snowflake Anaconda Channel.
패키지 생성에 대한 자세한 내용은 Snowpark 패키지 만들기 명령을 참조하십시오.
패키지를 Snowflake 스테이지에 업로드하기¶
패키지를 업로드하려면 snow snowpark package upload
명령을 사용합니다.
이 명령은 Python 패키지 zip 파일을 Snowflake 스테이지에 업로드하여, 프로시저나 함수의 가져오기에서 참조할 수 있도록 합니다.
snow snowpark package upload --file="july.zip" --stage="packages"
Package july.zip UPLOADED to Snowflake @packages/july.zip.
Snowpark 프로시저 및 함수에서 패키지 사용¶
프로시저나 함수에서 패키지를 사용하려면 snowflake.yml
의 Snowpark 정의 섹션에 있는 imports
매개 변수에 패키지를 추가합니다.
get_custom_package_version: handler: "functions.get_custom_package_version" signature: "" returns: string type: function imports: - "@packages/july.zip" meta: use_mixins: - snowpark_shared그런 다음 함수 핸들러에서 패키지를 가져옵니다.
# functions.py import july def get_custom_package_version(): return july.__VERSION__