pip install报no such option --system,AWS Serverless部署依赖安装问题
问题根因
--system是pip v10之前Debian/Ubuntu发行版定制补丁提供的专属参数,当前主流pip版本已完全移除该参数,因此执行原命令会提示参数不存在。手动去掉参数后仍报模块找不到,是因为本地安装的依赖要么没有被打包到Serverless部署包,要么本地编译的二进制依赖和AWS Lambda运行环境不兼容。
正确安装依赖操作步骤
- 先清空当前目录下之前错误安装的依赖文件,避免残留冲突,注意不要误删业务代码、requirements.txt、serverless.yml配置文件。
- 执行适配Lambda运行环境的依赖安装命令,直接将依赖安装到部署根目录:
如果Lambda使用x86架构运行环境,执行:pip3 install -r requirements.txt -t . --platform manylinux2014_x86_64 --only-binary=:all: --upgrade
如果Lambda使用ARM架构运行环境,执行:pip3 install -r requirements.txt -t . --platform manylinux2014_aarch64 --only-binary=:all: --upgrade
参数说明:-t .指定依赖安装路径为当前目录,Serverless打包时会自动将当前目录所有文件上传到Lambda,运行时可直接读取依赖--platform指定兼容Lambda运行环境的目标平台,避免本地环境编译的二进制包无法在Lambda中运行--only-binary=:all:强制下载预编译二进制包,跳过本地编译环节--upgrade强制覆盖已存在的旧版本依赖,避免版本冲突
- 若使用Serverless Framework部署,可直接安装
serverless-python-requirements插件,无需手动执行pip命令,插件会自动在兼容Lambda的环境中完成依赖打包,不会出现模块缺失问题。 - 安装完成后在当前目录启动Python终端,执行
import 你的依赖包名验证可用性,无报错后再执行部署命令即可。
注意事项
不要在Python虚拟环境中执行上述安装命令,否则依赖会被安装到虚拟环境目录而非当前项目部署目录,导致打包时缺失依赖。
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

