我的AWS Lambda函数存在ImportError
问题
- 我可以在没有
ImportError
的情况下本地运行此代码 - 我使用
zappa
无服务器将代码上传到AWS Lambda,这需要一个虚拟环境,是一个用于创建和更新Lambda函数的端到端解决方案 - 我以前在AWS Lambda上使用过此代码
我不确定我所做的更改(#3(使该代码从工作状态变为ImportError
。日志输出如下。
[ERROR] Runtime.ImportModuleError: Unable to import module 'dailycore': Unable to import required dependencies:
numpy:
IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!
Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.
We have compiled some common reasons and troubleshooting tips at:
https://numpy.org/devdocs/user/troubleshooting-importerror.html
Please note and check the following:
* The Python version is: Python3.8 from "/var/lang/bin/python3.8"
* The NumPy version is: "1.23.3"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: No module named 'numpy.core._multiarray_umath'
我不清楚这是Numpy问题、Python问题还是Zappa问题。我做了两个可能产生影响的更改:
- 我分离出一些个人代码,将其上传到github,并使用
pip
将其作为包安装在虚拟环境中 - 我从我的机器上卸载了Python并重新安装了它——因为我有两个版本导致了冲突。在重新安装(Python 3.8(时,我更改了默认的安装目录
代码从VS code本地运行,并完全包含在虚拟环境中(即,目前我没有通过虚拟环境之外的机器上的pip安装任何包(。以上建议可能适用于此错误。我已经尝试在Python 3.8目录中添加一个系统PATH变量。我已尝试将numpy降级为1.23.0
。我已尝试卸载虚拟环境中的所有依赖项并重新安装它们。
更新:我找到了这个链接,正在调查这些评论:https://github.com/Miserlou/Zappa/issues/1222
更新2:我删除了虚拟环境,并根据上面链接中的建议重新创建。这不起作用。
UPDATE3:我认为我的问题与我通过个人github repos的pip安装的私有包依赖性有关(#2-2(。此链接可能有关联。依赖关系不在顶级。我不确定如何解决此问题和/或重新打包我的私人回购或正确安装。如有任何澄清,不胜感激。
UPDATE4:我已经将我的问题与私有包依赖关系以及如何调用它们隔离开来。该解决方案可能与Lambda Layers有关,请参阅此处的教程。正在对此进行调查。
ImportModuleError
与这个python包有关:alpha_vantage,而不是我的任何一个初始理论。不过,我不确定为什么。这似乎与Alpha Vantage的setup.py
文件有关;尽管我可能错了。
我现在已经删除了对Alpha Vantage的引用,但如果有人知道为什么安装这个包会引发numpy
错误,请详细说明。我认为对numpy
的唯一引用是通过pandas
包——这只是一个可选安装(即setup.py
中的extras_requires
(