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

Lambda无法识别Python依赖tokenizations的问题排查求助

Lambda导入pytokenizations报错的原因及解决办法

可能原因1:包路径与Lambda搜索路径不匹配

你用pip install --target ./package安装后,pytokenizations的文件会放在./package/tokenizations目录下,但Lambda默认只把函数代码的根目录加入Python模块搜索路径。如果你的main.py在根目录,而tokenizations包藏在package子目录里,Python自然找不到它。另外,pytokenizations的内部结构确实是tokenizations.tokenizations(包名嵌套同名核心模块),所以路径不对时,就会报找不到内层模块的错误。

解决办法:

  • 最简单的方式:安装完成后,把./package目录下的所有文件(包括tokenizations文件夹)直接移到Lambda函数代码的根目录,再打包上传,不要保留package子目录。
  • 或者在main.py开头加一段代码,手动把package目录加入搜索路径:
    import sys
    import os
    sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'package'))
    

可能原因2:C扩展编译环境不兼容

pytokenizations包含C扩展模块,你本地安装时编译的二进制文件(.so格式)只适配你本地的操作系统,而Lambda用的是Amazon Linux环境,二进制文件不兼容会导致无法加载内层的tokenizations模块,触发这个双重命名的错误。

解决办法:

  • 在和Lambda兼容的环境里编译安装:比如用Docker跑Amazon Linux容器来构建包。步骤大概是:
    1. 拉取Amazon Linux镜像:docker pull amazonlinux:2
    2. 启动容器并挂载本地目录:docker run -v $(pwd):/app -it amazonlinux:2 bash
    3. 在容器里安装依赖:yum install -y python3-pip python3-devel gcc
    4. 安装库到本地挂载的package目录:pip3 install pytokenizations --target ./app/package
    5. 退出容器后,用这个生成的package目录文件打包上传。

可能原因3:打包时遗漏了关键文件

如果打包时没把tokenizations目录下的所有文件(比如内层的tokenizations.py或者编译后的.so文件)都包含进去,也会出现找不到模块的情况。

解决办法:

  • 打包时确保包含整个tokenizations目录,比如用命令:zip -r function.zip main.py tokenizations/(如果已经移到根目录),或者zip -r function.zip main.py package/(如果用路径添加的方式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:10:28