我试图上传一个zip文件,其中大部分包含python包,大小为300MB到awslambda。我清楚地理解,如果我们直接使用awsdk上传的话,这超出了可以上传到Lambda的zip的限制。因此,这是行不通的。在
为了克服这个问题,我决定下载/tmp
目录中的包并将它们导入主文件(引用here)。我将所需的包压缩为pkgs.zip
,并将其上载到aws3。然后我使用requests
下载它们,将它们提取到/tmp/
。在
def get_pkgs(url):
import requests
import io
import zipfile
print("Getting Packages...")
re = requests.get(url)
z = zipfile.ZipFile(io.BytesIO(re.content))
print("Extracting Packages...")
z.extractall("/tmp/")
print("Packages are downloaded and extracted.")
def attempt_import():
print("="*50)
print("ATTEMPT TO IMPORT DEPENDENCIES...")
print("="*50)
import numpy
import scipy
import six
print("IMPORTING DONE.")
def main():
URL = "https://s3-ap-southeast-1.amazonaws.com/BUCKET_NAME/pkgs.zip"
get_pkgs(URL)
attempt_import()
def lambda_handler(event, context):
main()
return "Hello Lambda"
但是,当我测试lambda函数时,它返回一个错误,说明找不到numpy
Import Error: No module named numpy
我的问题是,如何从/tmp/
目录导入所需的包?
提前谢谢。在
在导入任何已下载到
/tmp
文件夹(例如/tmp/requirements
文件夹)之前,必须告诉系统在那里查找依赖关系。在代码的开头,就在这几行:相关问题 更多 >
编程相关推荐