Charger un paquet Python existant¶
Snowflake CLI vous permet d’ajouter des paquets Python existants aux importations de Snowpark en utilisant les commandes snow snowpark package
. Vous pouvez utiliser des paquets déjà mis en œuvre, tels que ceux de PyPi, dans vos fonctions et procédures.
Pour ajouter un paquet Python aux importations de Snowpark, procédez comme suit :
Vérifier si un paquet est déjà disponible¶
Pour vérifier si un paquet n’est pas déjà disponible, utilisez la commande snow snowpark package lookup
.
L’exemple suivant illustre la recherche d’un paquet déjà disponible sur le canal Snowflake Anaconda :
snow snowpark package lookup numpy
Package `numpy` is available in Anaconda. Latest available version: 1.26.4.
Si un paquet n’est pas disponible sur le canal de Snowflake Anaconda, vous pouvez obtenir un message similaire au suivant :
snow snowpark package lookup july
Package `july` is not available in Anaconda. To prepare Snowpark compatible package run:
snow snowpark package create july
Pour plus d’informations, consultez la commande snowpark package lookup.
Télécharger un paquet et créer un artefact Snowflake¶
Pour télécharger un paquet et créer un artefact Snowflake à télécharger, utilisez la commande snow snowpark package create
.
snow snowpark package create <name>
où :
<name>
peut être n’importe quel spécificateur d’exigences pris en charge parpip
, tel qu’un nom de paquet, une URL pour un paquet ou un chemin de fichier local.
Options supplémentaires :
--allow-shared-libraries
: autorise les bibliothèques partagées (.so
/.dll
) lors de l’utilisation de paquets installés viapip
.--ignore-anaconda
: ne consulte pas les paquets sur le canal de Snowflake Anaconda.--index-url
: spécifie l’URL de base du Python Package Index à utiliser pour la recherche de paquets. Cette URL doit pointer vers un référentiel conforme à PEP 503 (l’API de référentiel simple) ou vers un répertoire local présenté dans le même format.--skip-version-check
: ne comparez pas les versions des dépendances entre les exigences et Anaconda.
Les exemples suivants illustrent différentes situations de création d’artefacts Snowflake :
Exemple : créer un paquet à l’aide de l’option --ignore-anaconda
Exemple : créer un paquet déjà disponible dans le canal Snowflake Anaconda
Exemple : créer un paquet avec les dépendances d’Anaconda¶
Cet exemple crée un paquet Python sous la forme d’un fichier zip qui peut être téléchargé dans une zone de préparation et importé ultérieurement par une application Python de Snowpark. Les dépendances du paquet « july » se trouvent sur le canal Anaconda, elles ont donc été exclues du fichier .zip
. La commande affiche les paquets que vous devriez inclure dans requirements.txt
de votre projet Snowpark.
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
Exemple : créer un paquet à l’aide de l’option --ignore-anaconda
¶
Cet exemple crée le paquet july.zip
que vous pouvez utiliser dans votre projet Snowpark sans avoir besoin d’ajouter des dépendances au fichier requirements.txt
. Les messages d’erreur indiquent que certains paquets contiennent des bibliothèques partagées, ce qui peut ne pas fonctionner, par exemple lors de la création d’un paquet sous Windows.
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.
Exemple : créer un paquet déjà disponible dans le canal Snowflake Anaconda¶
Cet exemple ne crée pas le paquet parce qu’il existe déjà. Vous pouvez toujours forcer la création du paquet en utilisant l’option --ignore-anaconda
.
snow snowpark package create matplotlib
Package matplotlib is already available in Snowflake Anaconda Channel.
Pour plus d’informations sur la création d’un paquet, consultez la commande snowpark package create.
Charger le paquet dans une zone de préparation Snowflake¶
Pour charger votre paquet, utilisez la commande snow snowpark package upload
.
Cette commande charge un fichier zip de paquet Python vers une zone de préparation Snowflake afin qu’il puisse être référencé dans les importations d’une procédure ou d’une fonction.
snow snowpark package upload --file="july.zip" --stage="packages"
Package july.zip UPLOADED to Snowflake @packages/july.zip.
Utiliser le paquet dans les procédures et les fonctions Snowpark¶
Pour utiliser le paquet dans des procédures ou des fonctions, ajoutez-le au paramètre imports
de la section Définition de Snowpark dans snowflake.yml
.
get_custom_package_version: handler: "functions.get_custom_package_version" signature: "" returns: string type: function imports: - "@packages/july.zip" meta: use_mixins: - snowpark_sharedImportez ensuite votre paquet dans le gestionnaire (handler) de fonction.
# functions.py import july def get_custom_package_version(): return july.__VERSION__