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