[英]AWS lambda doesn't recognize python modules in deployment package
當我在AWS上將一個(壓縮的)部署程序包作為lambda函數上傳時,bs4和google都出現“ no module named ...”錯誤。
我使用venv創建了一個虛擬環境,並安裝了必需的依賴項。從虛擬環境中運行時,該應用程序運行正常。 但是,當我將其壓縮並作為lambda函數上傳到AWS上時,“ bs4”和(如果出於調試原因而將bs4的導入散列)也出現了“ bs4”錯誤,並且“谷歌”。 我檢查了zip文件中的site-packages文件夾,它們似乎在那里。
為什么有AWS的時候說沒有模塊?
我在Ubuntu上使用python3.6。
Lambda需要ZIP和所有庫以及您的主要python代碼文件在同一文件夾中。 這是我的工作:
使用以下層次結構創建一個新的軟件包文件夾
mkdir -p ./package/tmp/lib
將Project文件夾復制到temp文件夾
cp -a ./$(PROJECT)/. ./package/tmp/
將python站點軟件包從虛擬環境復制到軟件包中的temp文件夾
cp -a $(VIRTUAL_ENV)/lib/python2.7/site-packages/. ./package/tmp/
從temp文件夾中刪除所有未使用的庫(運行此特定lambda不需要)
rm -rf ./package/tmp/wheel*
壓縮臨時包目錄
cd ./package/tmp && zip -r ../$(PROJECT).zip .
這樣創建的最終zip文件可以在Lambda上上傳了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.