如何解决AWS Lambda中Runtime.ImportModuleError:找不到mysql模块
解决AWS Lambda中无法导入mysql模块的问题
这个问题我碰到过好多次了——Lambda的运行环境默认是不带第三方Python库的,所以你本地装了依赖没问题,但上传到Lambda就会找不到模块。下面给你两种最常用的解决方法,按需选就行:
方法1:手动将依赖与代码打包上传
这种方式适合单个Lambda函数使用依赖的场景,步骤很直接:
- 新建一个空目录,把你的Python脚本(比如
pythonfilename.py)复制进去。 - 打开终端,进入这个目录,执行以下命令安装
mysql-connector-python到当前目录(注意用这个包名,PyPI上的mysql包是另一个无关库):
这里的pip install mysql-connector-python -t .-t .参数是告诉pip把所有依赖包安装到当前目录下。 - 选中目录里的所有文件(包括你的脚本和刚安装的依赖文件夹),打包成ZIP文件。注意:要直接把文件放在ZIP的根目录,不要把整个文件夹套进去(比如不要让ZIP里第一层是你的目录名,而是直接看到
pythonfilename.py和mysql相关文件夹)。 - 登录AWS控制台,找到你的Lambda函数,在「代码」页面上传这个ZIP包,替换原来的代码即可。
方法2:使用Lambda层共享依赖
如果有多个Lambda函数都需要用到mysql-connector,用Lambda层更高效,不用每个函数都打包一遍:
- 先创建一个符合Lambda层目录结构的文件夹,比如:
这里的python/lib/python3.10/site-packages/3.10要替换成你Lambda函数使用的Python版本(比如3.9、3.11,必须和函数版本一致)。 - 终端进入
python文件夹的父级目录,执行命令安装依赖到指定路径:pip install mysql-connector-python -t python/lib/python3.10/site-packages/ - 把整个
python文件夹打包成ZIP文件(ZIP里第一层就是python文件夹,不要额外嵌套)。 - 在AWS控制台的「Lambda层」页面,点击「创建层」,上传这个ZIP包,选择对应的Python运行时版本,完成层的创建。
- 回到你的Lambda函数,在「层」标签页点击「添加层」,选择你刚创建的层,保存后函数就能正常导入mysql模块了。
关键注意事项
- 确保本地安装依赖时使用的Python版本,和Lambda函数配置的运行时版本完全一致,否则可能出现兼容性错误。
- 一定要安装
mysql-connector-python而不是mysql包——PyPI上的mysql包是一个废弃的库,和你需要的MySQL连接器不是同一个东西。
内容的提问来源于stack exchange,提问作者wawawa
相关产品推荐
相关产品推荐

