簡體   English   中英

使用無服務器的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無法導入模塊' main ':缺少必需的依賴項['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']

我認為這里有兩個問題:

  1. AWS Lambda僅支持Python 2.7和3.6,因此我們應該使用3.6而不是3.5
  2. 像Numpy這樣需要編譯的軟件包需要為Linux構建。 如果您使用的是Windows或OSX,則需要通過Docker安裝這些軟件包。 無服務器包含一個方便的配置。 確保您的serverless.yml包含以下內容。

來自https://serverless.com/blog/serverless-python-packaging/

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM