You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Snowpark中导入Azure Blob Services Package?解决模块未找到错误

在Snowpark中导入Azure Blob Service依赖包的解决方法

出现ModuleNotFound错误是因为Snowpark运行环境默认没有包含Azure Blob相关的Python包,以下是几种可行的解决方式:

方法1:创建自定义Python环境(推荐)

通过Snowflake的自定义Python环境,预先安装所需依赖,后续所有Snowpark任务都可复用该环境:

  • 首先明确需要的包:核心依赖是azure-storage-blob,如果脚本用到pandas解析Excel,还需pandas、openpyxl(处理.xlsx文件)或xlrd(处理.xls文件)。
  • 创建存储依赖的stage(若直接从PyPI拉取包可跳过上传步骤):
    CREATE STAGE IF NOT EXISTS AZURE_DEPENDENCIES_STAGE;
    
  • 若使用本地wheel包,通过SnowSQL上传到stage:
    snowsql -a <你的账户标识> -u <用户名> -d <数据库> -s <模式> -w <仓库> -q "PUT file:///本地路径/azure-storage-blob-*.whl @AZURE_DEPENDENCIES_STAGE AUTO_COMPRESS = FALSE;"
    
  • 创建自定义Python环境:
    CREATE OR REPLACE PYTHON ENVIRONMENT AZURE_BLOB_ENV
    FROM PACKAGES
    ('azure-storage-blob', 'pandas', 'openpyxl') -- 直接从PyPI拉取,或改用@AZURE_DEPENDENCIES_STAGE/azure-storage-blob-*.whl指定本地包
    RUNTIME_VERSION = '3.8'; -- 需匹配Snowpark支持的Python版本
    
  • 在Snowpark代码中指定使用该环境:
    from snowflake.snowpark import Session
    
    session_config = {
        "account": "<你的账户>",
        "user": "<用户名>",
        "password": "<密码>",
        "database": "<数据库>",
        "schema": "<模式>",
        "warehouse": "<仓库>",
        "python_environment": "AZURE_BLOB_ENV"
    }
    session = Session.builder.configs(session_config).create()
    

方法2:在存储过程中直接声明依赖

如果脚本是通过Snowflake存储过程运行,可在创建存储过程时直接指定所需包:

CREATE OR REPLACE PROCEDURE process_azure_excel_to_csv()
RETURNS STRING
LANGUAGE PYTHON
RUNTIME_VERSION = '3.8'
PACKAGES = ('azure-storage-blob', 'pandas', 'openpyxl')
HANDLER = 'main'
AS
$$
def main(session):
    # 你的核心逻辑代码
    from azure.storage.blob import BlobServiceClient
    import pandas as pd

    # 示例:连接Azure Blob并读取文件
    blob_service_client = BlobServiceClient.from_connection_string("<你的Azure连接字符串>")
    blob_client = blob_service_client.get_blob_client(container="<容器名>", blob="<Excel文件名>")
    df = pd.read_excel(blob_client.download_blob())
    
    # 将DataFrame写入Snowflake stage或转为CSV的逻辑
    # ...
    
    return "Excel转CSV处理完成"
$$;

注意事项

  • 确认Snowpark支持的Python版本(当前主流为3.8/3.9),选择对应版本的依赖包,避免版本不兼容。
  • 若Snowflake环境无法直接访问PyPI,需提前将依赖包上传到内部stage,再通过stage引用。
  • 若脚本需要访问Azure Blob,需确保Snowflake已配置好对应的外部访问权限(如Azure存储集成),避免后续出现权限错误。

内容的提问来源于stack exchange,提问作者karthick a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:21:49