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