将Googletrans移植到Snowflake Snowpark UDF时遇ModuleNotFoundError求解
解决Snowpark UDF中Googletrans模块找不到的问题
以下是解决ModuleNotFoundError的具体步骤:
检查压缩包结构
确保你上传的googletrans.zip解压后,根目录直接是googletrans模块文件夹(包含__init__.py、client.py等核心文件),而非嵌套在其他父文件夹中。错误的结构会导致Python无法识别该模块。在UDF代码中添加模块路径
Snowpark会将导入的文件存放在临时目录,需要手动将该目录加入Python的搜索路径。修改你的UDF代码:import sys from snowflake.snowpark.functions import udf from snowflake.snowpark.files import get_import_path session = snowpark_session('DWH', 'MY_SCHEMA') # 使用完整阶段路径确保导入正确 session.add_import("@DWH.MY_SCHEMA.PACKAGES/googletrans.zip") session.add_packages("snowflake-snowpark-python", "pandas", "numpy", "scikit-learn", "spacy", "httpx") @udf(name='MY_FUNCTION', replace=True, is_permanent=True, stage_location="@MODEL_STAGE") def myFun(text:str) -> bool: # 获取导入文件的临时路径并加入sys.path sys.path.append(get_import_path()) import googletrans translator = googletrans.Translator() # ... 你的业务逻辑 return True补充Googletrans的依赖包
Googletrans依赖httpx等第三方库,这些库未被Snowpark默认包含。需要通过session.add_packages()添加这些依赖(如果Snowflake的Anaconda仓库提供),或者将依赖包也打包上传到阶段并添加导入。验证阶段文件路径
执行LIST @DWH.MY_SCHEMA.PACKAGES;命令,确认googletrans.zip确实存在于指定阶段中,避免路径拼写错误。
内容的提问来源于stack exchange,提问作者Vid Stropnik
相关产品推荐
相关产品推荐

