【问题标题】:Importing Python Module "Pulp" on Amazon AWS Lambda在 Amazon AWS Lambda 上导入 Python 模块“Pulp”
【发布时间】:2018-01-07 22:43:12
【问题描述】:

我一直在尝试将 python 模块“Pulp”导入 Amazon AWS Lambda,但出现错误。 Pulp 是一个优化模块,可以使用 pip(“pip install pinch”)进行安装,但与在 AWS Lambda 中一样,我不确定如何安装它,所以我将所有内容与 Lambda 函数一起从本地机器上压缩并将其上传到 AWS Lambda .

我收到的错误:-

"尝试在非包中进行相对导入:ValueError 回溯(最近一次通话最后): 文件“/var/task/lambda_function.py”,第 5 行,在 lambda_handler 进口纸浆 文件“/var/task/pulp.py”,第 101 行,在 从 .constants 导入 * ValueError: Attempted relative import in non-package"

这里是 .zip 文件的链接https://drive.google.com/open?id=0B7SjHToKYgr3cXlHenpoOFljMDg

提前致谢。

【问题讨论】:

    标签: python amazon-web-services pulp


    【解决方案1】:

    按照http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html上的说明进行操作

    关于如何使用 virtualenv 部署到 AWS lambda。

    【讨论】:

    • 嗨斯图尔特感谢您的回复。上述问题已解决,但现在我收到另一个错误:“NoneType”对象没有属性“actualSolve”:AttributeError Traceback(最近一次调用最后一次):文件“/var/task/lambda_function.py”,第 40 行,在 lambda_handler prob.solve() 文件“/var/task/Pulp1/pulp.py”中,第 1664 行,在求解状态 = solver.actualSolve(self, **kwargs) AttributeError: 'NoneType' object has no attribute 'actualSolve '
    • 我认为在 AWS Lambda 上它无法找到求解器
    • 你是通过 virtualenv 安装的吗?
    • 是的,我在 EC2 上安装了 virtualenv,从那里使用 Win SCP 复制了纸浆文件,然后将其压缩并上传到 Lambda。
    • 是的,在这种情况下,求解器似乎是 None,您可以手动设置 cbc 的路径(从求解器目录复制 cbc.exe)prob.solve(COIN_CMD(path="...put something here"))
    【解决方案2】:

    该错误是一个标准 Python 错误,表示它只会从标准位置导入内容。由于这包括当前目录,你应该很好,但你的代码包括

        from . import pulp
    

    当您的目录中有纸浆.py 时。如果只需要纸浆.py 就可以了。但是pulp.py 想要import .constants。这 一个相对引用,这很好,因为它应该在一个模块中。在你的情况下,这并不好。如果你想继续走这条路,你将不得不经历并删除这些相对导入。

    您的 .zip 文件还包括 .pyc 文件。让这些在目标机器上生成。只需发送他们来自的 .py 文件即可。

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2017-04-29
      • 2020-12-02
      • 2020-03-30
      • 1970-01-01
      相关资源
      最近更新 更多