适用于python代码的AWS lamda部署

时间:2018-06-21 19:03:04

标签: python amazon-web-services aws-lambda virtualenv

我在Windows m / c中编写了一个python代码,并通过创建virtualenv并复制\ Lib \ site-packages来包含依赖项。 当我能够从Windows m / c成功运行此代码时,但是当我在AWS lambda中进行部署时,出现“没有名为'pyodbc'的模块”错误。 我需要包括其他任何用于AWS Lambda部署的软件包吗? 我正在Windows平台上创建虚拟环境。

1 个答案:

答案 0 :(得分:1)

我有一个类似的错误,就我而言,这是因为跨包导入,对我而言,本地工作与在云上工作的方式不同。

例如,我的结构类似于以下结构:

src:
  package1:
     - file_a.py
        - ClassA
  package2:
     - file_b.py
        - ClassB

...并且我不得不将Class_A导入到Class_B中。在本地,classB中的导入看起来像这样:

from src.package1.file_a import ClassA

在我的案例中,部署到云后,它再也看不到“ src”,因为那里的根软件包没有名称。

解决方法是将ClassB导入包装为try-除外。在except块中,我使用了不带“ src”的相同import语句。部分,就像这样:

try:
   # works locally
   from src.package1.file_a import ClassA
except:
   # works on the cloud
   from package1.file_a import ClassA