-1

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

4

1 回答 1

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。在 except 块中,我使用了相同的导入语句,但没有“src”。部分,像这样:

try:
   # works locally
   from src.package1.file_a import ClassA
except:
   # works on the cloud
   from package1.file_a import ClassA
于 2020-12-08T01:19:56.980 回答