无法通过requirements.txt安装Alexa Skill依赖?求替代方案及pip安装方法
解决MechanicalSoup在Alexa Skill部署中无法通过requirements.txt安装的问题
问题分析
从你提供的依赖列表和部署失败情况来看,核心原因大概率是依赖版本冲突,或是Alexa Skill的Lambda运行环境(默认基于Amazon Linux 2)缺少编译工具链,导致部分需要编译的包(如lxml)安装失败。
解决办法
1. 简化requirements.txt,避免手动列子依赖
MechanicalSoup会自动管理自身的依赖(如beautifulsoup4、requests等),手动罗列所有子依赖反而容易引发版本冲突。修改后的requirements.txt只需保留核心依赖:
boto3==1.9.216 ask-sdk-core==1.11.0 mechanicalsoup==1.2.0
2. 本地用pip安装并打包适配Lambda的依赖
如果是本地打包后上传到Lambda,可按以下步骤操作:
- 创建并激活虚拟环境:
python -m venv alexa-skill-env # Windows系统 alexa-skill-env\Scripts\activate # macOS/Linux系统 source alexa-skill-env/bin/activate - 安装兼容Lambda环境的预编译依赖:
pip install -r requirements.txt --platform manylinux2014_x86_64 --only-binary=:all: --target ./package - 打包依赖:
cd package zip -r ../skill-package.zip . - 将你的技能代码(如
lambda_function.py)添加到zip包根目录,再上传到Lambda即可。
3. 排查版本兼容性
若简化依赖后仍失败,尝试升级老旧依赖版本:
boto3==1.9.216版本过旧,可尝试升级到boto3==1.28.0(兼容ask-sdk-core的稳定版)ask-sdk-core==1.11.0建议升级到ask-sdk-core==1.30.0左右的稳定版本,再搭配MechanicalSoup使用
4. 使用Lambda层托管依赖
不想手动打包的话,可将MechanicalSoup及其依赖做成Lambda层:
- 按上述步骤打包依赖后,创建Lambda层并上传该zip包,最后在你的Alexa Skill Lambda函数中关联此层即可。
关键提示
Alexa Skill的Lambda运行环境没有完整编译工具链,务必使用预编译二进制包(通过--only-binary=:all:参数),避免安装需要编译的包。
内容的提问来源于stack exchange,提问作者SatsumaSegment
相关产品推荐
相关产品推荐

