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

Snowflake Python工作表导入Office365-REST-Python-Client失败求助

解决Snowflake Python工作表导入Office365-REST-Python-Client包的问题

你的问题核心出在包的打包方式错误,以及导入逻辑不符合Snowflake自定义包的加载要求,以下是修正后的完整流程:

一、重新正确打包Office365模块

  1. 下载包的wheel文件:
    pip download Office365-REST-Python-client
    
  2. 解压下载的wheel文件(替换为你实际下载的文件名):
    unzip office365_rest_python_client-2.5.11-py3-none-any.whl
    
  3. 只保留解压后得到的office365目录,将这个目录直接打包为zip文件(比如命名为office365.zip)——确保zip根目录就是office365文件夹,不要嵌套其他层级。

二、上传并加载包

  1. 将新打包的office365.zip上传到Snowflake Stage;
  2. 在Python工作表的包菜单中加载该zip文件(确认加载成功)。

三、修正工作表代码

你之前的代码有两个关键问题:一是添加sys.path的逻辑需要调整,二是导入的是zip文件名而非实际模块名。修正后的代码如下:

import sys
import snowflake.snowpark as sp
import snowflake.snowpark.functions as sff

def main(session):   
    # 启用自定义包支持
    session.custom_packages_usage_config = {"enabled": True}
    
    # 获取Snowflake的导入目录
    import_dir = sys._xoptions.get("snowflake_import_directory")
    # 将zip文件的完整路径添加到sys.path
    sys.path.append(f"{import_dir}office365.zip")
    
    # 导入实际的模块(和本地环境用法一致)
    from office365.sharepoint.client_context import ClientContext
    
    # 测试代码(可替换为你的业务逻辑)
    dataframe = session.table('information_schema.packages') \
                        .filter(sff.col("language") == 'python') \
                        .filter(sff.col("runtime_version") == '3.11')   
    return dataframe

关键说明

  • 不要将wheel文件直接打包成zip,Python无法从wheel文件中直接加载模块,必须提取出实际的模块目录再打包;
  • 导入时使用模块本身的名称(office365.sharepoint.client_context),而非zip文件名;
  • snowflake_import_directory指向的是你加载的包所在的stage路径,确保拼接的zip文件名和你上传的完全一致。

内容的提问来源于stack exchange,提问作者Simon Norton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:56:10