Bestehendes Python-Paket hochladen¶
Snowflake CLI ermöglicht es Ihnen, bestehende Python-Pakete mit snow snowpark package
-Befehlen zu Snowpark-Importen hinzuzufügen. Sie können in Ihren Funktionen und Prozeduren bereits implementierte Pakete verwenden, z. B. die von PyPi.
Um ein Python-Paket zu den Snowpark-Importen hinzuzufügen, gehen Sie wie folgt vor:
Prüfen, ob Paket bereits verfügbar ist¶
Um zu überprüfen, ob ein Paket nicht bereits verfügbar ist, verwenden Sie den Befehl snow snowpark package lookup
.
Das folgende Beispiel veranschaulicht die Suche nach einem Paket, das bereits im Snowflake-Anaconda-Kanal verfügbar ist:
snow snowpark package lookup numpy
Package `numpy` is available in Anaconda. Latest available version: 1.26.4.
Wenn ein Paket im Snowflake-Anaconda-Kanal nicht verfügbar ist, können Sie eine Meldung ähnlich der folgenden erhalten:
snow snowpark package lookup july
Package `july` is not available in Anaconda. To prepare Snowpark compatible package run:
snow snowpark package create july
Weitere Informationen dazu finden Sie unter dem Befehl snowpark package lookup.
Paket herunterladen und Snowflake-Artefakt erstellen¶
Um ein Paket herunterzuladen und ein Snowflake-Artefakt zum Hochladen zu erstellen, verwenden Sie den Befehl snow snowpark package create
.
snow snowpark package create <name>
Wobei:
<name>
kann eine beliebige Anforderung sein, die vonpip
unterstützt wird, z. B. ein Paketname, eine URL für ein Paket oder ein lokaler Dateipfad.
Zusätzliche Optionen:
--allow-shared-libraries
: Erlaubt gemeinsam genutzte (.so
/.dll
) Bibliotheken, wenn Sie Pakete verwenden, die überpip
installiert wurden.--ignore-anaconda
: Sucht nicht nach Paketen im Snowflake-Anaconda-Kanal.--index-url
: Gibt die Basis-URL des Python Package Index an, die für die Paketsuche verwendet werden soll. Diese URL sollte auf ein Repository verweisen, das mit PEP 503 (die einfache Repository-API) kompatibel ist, oder auf ein lokales Verzeichnis, das im gleichen Format angelegt ist.--skip-version-check
: Überspringt den Versionsvergleich von Abhängigkeiten zwischen Anforderungen und Anaconda.
Die folgenden Beispiele veranschaulichen verschiedene Situationen für das Erstellen von Snowflake-Artefakten:
Beispiel: Paket mit Anaconda-Abhängigkeiten erstellen¶
In diesem Beispiel wird ein Python-Paket als ZIP-Datei erstellt, die in einen Stagingbereich hochgeladen und später von einer Snowpark Python-App importiert werden kann. Die Abhängigkeiten für das Paket „july“ befinden sich im Anaconda-Kanal, sodass sie nicht in die Datei .zip
aufgenommen wurden. Der Befehl zeigt die Pakete an, die Sie in die Datei requirements.txt
Ihres Snowpark-Projekts aufnehmen müssen.
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
Beispiel: Paket mit Option --ignore-anaconda
erstellen¶
In diesem Beispiel wird das Paket july.zip
erstellt, das Sie in Ihrem Snowpark-Projekt verwenden können, ohne dass Sie der Datei requirements.txt
irgendwelche Abhängigkeiten hinzufügen müssen. Die Fehlermeldungen weisen darauf hin, dass einige Pakete freigegebene Bibliotheken enthalten, die möglicherweise nicht funktionieren, z. B. wenn Sie ein Paket unter Windows erstellen.
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.
Beispiel: Paket erstellen, das bereits im Snowflake Anaconda-Kanal verfügbar ist¶
In diesem Beispiel kann das Paket nicht erstellt werden, da es bereits existiert. Sie können das Erstellen des Pakets immer noch erzwingen, indem Sie die Option --ignore-anaconda
verwenden.
snow snowpark package create matplotlib
Package matplotlib is already available in Snowflake Anaconda Channel.
Weitere Informationen zum Erstellen eines Pakets finden Sie unter dem Befehl snowpark package create.
Paket in Snowflake-Stagingbereich hochladen¶
Um Ihr Paket hochzuladen, verwenden Sie den Befehl snow snowpark package upload
.
Mit diesem Befehl wird eine Python-Paket-ZIP-Datei in einen Snowflake-Stagingbereich hochgeladen, sodass es in den Importen einer Prozedur oder Funktion referenziert werden kann.
snow snowpark package upload --file="july.zip" --stage="packages"
Package july.zip UPLOADED to Snowflake @packages/july.zip.
Paket in Snowpark-Prozeduren und -Funktionen verwenden¶
Um das Paket in Prozeduren oder Funktionen zu verwenden, fügen Sie es dem Parameter imports
im Abschnitt Snowpark-Definition in snowflake.yml
hinzu.
get_custom_package_version: handler: "functions.get_custom_package_version" signature: "" returns: string type: function imports: - "@packages/july.zip" meta: use_mixins: - snowpark_sharedDann importieren Sie Ihr Paket in den Funktionshandler.
# functions.py import july def get_custom_package_version(): return july.__VERSION__