python lambda无法检测打包的模块

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

我正在尝试通过上传一个 zip 文件来创建一个 lambda 函数,该文件的根目录下有一个 .py 文件,还有 2 个文件夹,其中包含通过 pip 下载的请求库。

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

无法导入模块“main”:没有名为 requests 的模块

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

在根目录zip -r upload.zip *

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

导入请求

仅供引用: 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)

最佳答案

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

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

关于python lambda无法检测打包的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640650/

相关文章:

python - 带有 paramiko 的 ssh 客户端 (python)

python - native 应用程序(混合)使用 django-social-auth

amazon-web-services - 现有 VPC 中 s3 的 cloudformation 模板

amazon-web-services - AWS 自动使用新的 AMI 更新自动扩展组?

java - 为什么导入 java.util.* 不足以导入流?

java - 如何让 'import java.net.*' 工作?

python - 如何让程序只有在按下回车键时才继续运行?

python - Pytest - 测试解析器错误 : Unrecognised arguments

amazon-web-services - 无法将 MySQL Workbench 连接到 RDS 实例

database - 如何将 .sql 文件导入我的 Heroku postgres 数据库?