python lambda无法检测打包的模块

时间:2016-02-25 23:43:05

标签: python amazon-web-services import lambda python-requests

我尝试通过在根目录上下载带有单个.py文件的zip文件和包含通过pip下载的请求lib的2个文件夹来创建lambda函数。

运行代码本地工作文件。当我压缩并上传代码时,我经常会收到此错误:

Unable to import module 'main': No module named requests

有时我会设法解决这个问题,但是它不一致,我不确定我是如何做到这一点的。我使用以下命令:

在根目录zip -r upload.zip *

这就是我导入请求的方式:

import requests

供参考: 1.我尝试了许多不同的导入方法,使用了失败的确切路径,所以我想知道这是不是问题呢? 2.每次失败并且我已经能够使它在lambda中工作,它涉及很多摆弄zip命令,因为我认为问题是我正在压缩内容不正确并将它们隐藏在一个额外的父文件夹。

期待看到我所犯的愚蠢错误!

添加代码段:

import json         ##Built In
import requests     ##Packaged with
import sys          ##Built In

def lambda_function(event, context):

alias = event['alias']
message = event['message']
input_type = event['input_type']

if input_type == "username":
    username = alias
elif input_type == "email":
    username = alias.split('@',1)[0]
elif input_type is None:
    print "input_type 'username' or 'email' required. Closing..."
    sys.exit()

payload = {
            "text": message,
            "channel": "@" + username,
            "icon_emoji": "<an emoji>",
            "username": "<an alias>"
          }

r = requests.post("<slackurl>",json=payload)
print(r.status_code, r.reason)

1 个答案:

答案 0 :(得分:2)

我在stackoverflow循环之外得到了一些帮助,这似乎一直有效。

zip -r upload.zip main.py requests requests-2.9.1.dist-info