AWS无法导入模块'app':没有名为Pymysql的模块

时间:2016-08-03 22:19:56

标签: python amazon-web-services import pymysql

我正在使用AWS控制台并尝试使用Lambda函数将数据添加到MySQL表。每当我尝试测试该函数时,我都会收到以下错误:

  

无法导入模块'app':没有名为pymysql的模块

它的行为就像pymysql一样不在路径中。我进入microEC2实例并pip'ed pymysql。但它仍然无效。我已经尝试将代码压缩到文件中并上传,并将代码复制并粘贴到控制台中并运行它。两者都不起作用。任何帮助将不胜感激。

以下是代码段:

import sys

import logging

import pymysql

def main(event, context):

2 个答案:

答案 0 :(得分:1)

您必须在部署中打包所有项目依赖项。

  1. 从您的虚拟环境中将PyMysql包复制到 代码所在目录的根目录。
  2. 创建一个zip,并将其上传到lambda函数

    请参阅docs

答案 1 :(得分:0)

  1. mkdir pymysql-layer/
  2. cd pymysql-layer/
  3. 输入以下文件:

    • get_layer_packages.sh

    导出PKG_DIR =“ python”

    rm -rf $ {PKG_DIR} && mkdir -p $ {PKG_DIR}

    docker run --rm -v $ {pwd):/ foo -w / foo lambci / lambda:build-python3.6 \ pip install -r requirements.txt --no-deps -t $ {PKG_DIR}

    • requirements.txt

    pymysql

    sqlalchemy

  4. 然后运行:chmod +x get_layer_packages.sh

  5. 然后运行:./get_layer_packages.sh
  6. 最后,运行'zip -r mysql.zip .

优选上传到S3,然后在创建s3:// path到lambda层中