使用无服务器的 Numpy lambda 错误
Numpy lambda error using serverless
我正在 mac OSX 并在 AWS 上部署 python lambda。
我已经按照这些说明创建了本地环境源 venv/bin/activate。
https://serverless.com/blog/serverless-python-packaging/
我已经安装了所有的包
$ pip install numpy
Requirement already satisfied: numpy in ./venv/lib/python3.5/site-packages (1.14.2)
然后我使用
部署包
pip freeze > requirements.txt
serverless deploy
在 lambda
上 运行 时出错
START RequestId: ################### Version: $LATEST
Unable to import module 'main': Missing required dependencies ['numpy']
另请注意:我的代码不是在调用 numpy,而是在调用 quandl,而 quandl 在调用 numpy
requirements.txt
asn1crypto==0.24.0
certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
cryptography==2.2.2
idna==2.6
inflection==0.3.1
more-itertools==4.1.0
ndg-httpsclient==0.4.4
numpy==1.14.2
pandas==0.22.0
pyasn1==0.4.2
pycparser==2.18
pyOpenSSL==17.5.0
python-dateutil==2.7.2
pytz==2018.4
Quandl==3.3.0
requests==2.18.4
six==1.11.0
urllib3==1.22
运行 ec2 上的相同代码。看起来它的 numpy 在调用它时遇到问题。
我将以下内容添加到 python 文件
import os
import sys
CWD = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(CWD, "lib"))
# end magic four lines
错误
Traceback (most recent call last):
File "__main__.py", line 11, in <module>
import quandl
File "/home/ubuntu/bots/ssali/quandl/__init__.py", line 7, in <module>
from .model.database import Database
File "/home/ubuntu/bots/ssali/quandl/model/database.py", line 18, in <module>
import quandl.model.dataset
File "/home/ubuntu/bots/ssali/quandl/model/dataset.py", line 5, in <module>
from .data import Data
File "/home/ubuntu/bots/ssali/quandl/model/data.py", line 1, in <module>
from quandl.operations.data_list import DataListOperation
File "/home/ubuntu/bots/ssali/quandl/operations/data_list.py", line 1, in <module>
from quandl.model.data_list import DataList
File "/home/ubuntu/bots/ssali/quandl/model/data_list.py", line 2, in <module>
from .data_mixin import DataMixin
File "/home/ubuntu/bots/ssali/quandl/model/data_mixin.py", line 1, in <module>
import pandas as pd
File "/home/ubuntu/bots/ssali/pandas/__init__.py", line 19, in <module>
"Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['numpy']
我认为这里有两个问题:
- AWS Lambda 只支持 Python 2.7 和 3.6 所以我们应该使用 3.6 而不是 3.5
- 像 Numpy 这样需要编译的包需要为 Linux 构建。如果您使用 Windows 或 OSX,则需要通过 Docker 安装这些软件包。无服务器包含一个方便的配置。确保以下内容在您的
serverless.yml
. 中
来自https://serverless.com/blog/serverless-python-packaging/
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux
我正在 mac OSX 并在 AWS 上部署 python lambda。
我已经按照这些说明创建了本地环境源 venv/bin/activate。
https://serverless.com/blog/serverless-python-packaging/
我已经安装了所有的包
$ pip install numpy
Requirement already satisfied: numpy in ./venv/lib/python3.5/site-packages (1.14.2)
然后我使用
部署包pip freeze > requirements.txt
serverless deploy
在 lambda
上 运行 时出错START RequestId: ################### Version: $LATEST Unable to import module 'main': Missing required dependencies ['numpy']
另请注意:我的代码不是在调用 numpy,而是在调用 quandl,而 quandl 在调用 numpy
requirements.txt
asn1crypto==0.24.0
certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
cryptography==2.2.2
idna==2.6
inflection==0.3.1
more-itertools==4.1.0
ndg-httpsclient==0.4.4
numpy==1.14.2
pandas==0.22.0
pyasn1==0.4.2
pycparser==2.18
pyOpenSSL==17.5.0
python-dateutil==2.7.2
pytz==2018.4
Quandl==3.3.0
requests==2.18.4
six==1.11.0
urllib3==1.22
运行 ec2 上的相同代码。看起来它的 numpy 在调用它时遇到问题。
我将以下内容添加到 python 文件
import os
import sys
CWD = os.path.dirname(os.path.realpath(__file__))
sys.path.insert(0, os.path.join(CWD, "lib"))
# end magic four lines
错误
Traceback (most recent call last):
File "__main__.py", line 11, in <module>
import quandl
File "/home/ubuntu/bots/ssali/quandl/__init__.py", line 7, in <module>
from .model.database import Database
File "/home/ubuntu/bots/ssali/quandl/model/database.py", line 18, in <module>
import quandl.model.dataset
File "/home/ubuntu/bots/ssali/quandl/model/dataset.py", line 5, in <module>
from .data import Data
File "/home/ubuntu/bots/ssali/quandl/model/data.py", line 1, in <module>
from quandl.operations.data_list import DataListOperation
File "/home/ubuntu/bots/ssali/quandl/operations/data_list.py", line 1, in <module>
from quandl.model.data_list import DataList
File "/home/ubuntu/bots/ssali/quandl/model/data_list.py", line 2, in <module>
from .data_mixin import DataMixin
File "/home/ubuntu/bots/ssali/quandl/model/data_mixin.py", line 1, in <module>
import pandas as pd
File "/home/ubuntu/bots/ssali/pandas/__init__.py", line 19, in <module>
"Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['numpy']
我认为这里有两个问题:
- AWS Lambda 只支持 Python 2.7 和 3.6 所以我们应该使用 3.6 而不是 3.5
- 像 Numpy 这样需要编译的包需要为 Linux 构建。如果您使用 Windows 或 OSX,则需要通过 Docker 安装这些软件包。无服务器包含一个方便的配置。确保以下内容在您的
serverless.yml
. 中
来自https://serverless.com/blog/serverless-python-packaging/
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux