上传现有的 Python 包¶
Snowflake CLI 允许您使用 snow snowpark package 命令将现有 Python 包添加到 Snowpark 导入中。您可以在函数和存储过程中使用已经实施的包,如 PyPi 中的包。
要在 Snowpark 导入中添加 Python 包,请执行以下操作:
检查包是否已经可用¶
要检查包是否已经可用,请使用 snow snowpark package lookup 命令。
以下示例说明了查找 Snowflake Anaconda 通道上可用的包的过程:
如果在 Snowflake Anaconda 通道上没有可用的包,您可以得到类似下面的消息:
更多信息,请参阅 snowpark package lookup 命令。
下载包并创建 Snowflake 工件¶
要下载包并创建 Snowflake 工件并进行上传,请使用 snow snowpark package create 命令。
其中:
<name>可以是pip支持的任何需求说明符,例如包名称、包的 URL 或本地文件路径。
其他选项:
--allow-shared-libraries:当使用通过pip安装的包时,允许使用共享 (.so/.dll) 库。--ignore-anaconda:不在 Snowflake Anaconda 通道上查找包。--index-url:指定用于查找包的 Python 包索引的基础 URL。URL 应指向一个符合 PEP 503 的存储库(简单存储库 API)或以相同格式布局的本地目录。--skip-version-check:跳过比较需求和 Anaconda 之间的依赖项版本。
下面的示例说明了创建 Snowflake 工件的一些不同情况:
示例:创建包含 Anaconda 依赖项的包¶
此示例将 Python 包创建为 zip 文件,该文件可以上传到暂存区,然后由 Snowpark Python 应用程序导入。“july”包的依赖项位于 Anaconda 通道上,因此它们被排除在 .zip 文件之外。命令显示您需要包含在 Snowpark 项目的 requirements.txt 中的包。
示例:使用 --ignore-anaconda 选项创建包¶
此示例创建您可以在 Snowpark 项目中使用的 july.zip 包,而无需向 requirements.txt 文件添加任何依赖项。错误消息指示某些包包含共享库,这些库可能无法正常工作,例如在使用 Windows 创建包时。
示例:创建已在 Snowflake Anaconda 通道中提供的包¶
此示例无法创建包,因为包已存在。您仍然可以使用 --ignore-anaconda 选项强制创建包。
有关创建包的更多信息,请参阅 snowpark package create 命令。
将包上传到 Snowflake 暂存区¶
要上传包,请使用 snow snowpark package upload 命令。
此命令会将 Python 包 zip 文件上传到 Snowflake 暂存区,以便在存储过程或函数的导入中引用该包。
在 Snowpark 存储过程和函数中使用该包¶
要在存储过程或函数中使用该包,请将其添加到 snowflake.yml 中 Snowpark 定义 部分的 imports 参数中。
然后在函数处理程序中导入包。