簡體   English   中英

AWS Lambda無法識別部署包中的python模塊

[英]AWS lambda doesn't recognize python modules in deployment package

當我在AWS上將一個(壓縮的)部署程序包作為lambda函數上傳時,bs4和g​​oogle都出現“ no module named ...”錯誤。

我使用venv創建了一個虛擬環境,並安裝了必需的依賴項。從虛擬環境中運行時,該應用程序運行正常。 但是,當我將其壓縮並作為lambda函數上傳到AWS上時,“ bs4”和(如果出於調試原因而將bs4的導入散列)也出現了“ bs4”錯誤,並且“谷歌”。 我檢查了zip文件中的site-packages文件夾,它們似乎在那里。

為什么有AWS的時候說沒有模塊?

我在Ubuntu上使用python3.6。

Lambda需要ZIP和所有庫以及您的主要python代碼文件在同一文件夾中。 這是我的工作:

  1. 使用以下層次結構創建一個新的軟件包文件夾

    mkdir -p ./package/tmp/lib

  2. 將Project文件夾復制到temp文件夾

    cp -a ./$(PROJECT)/. ./package/tmp/

  3. 將python站點軟件包從虛擬環境復制到軟件包中的temp文件夾

    cp -a $(VIRTUAL_ENV)/lib/python2.7/site-packages/. ./package/tmp/

  4. 從temp文件夾中刪除所有未使用的庫(運行此特定lambda不需要)

     rm -rf ./package/tmp/wheel* 
  5. 壓縮臨時包目錄

    cd ./package/tmp && zip -r ../$(PROJECT).zip .

這樣創建的最終zip文件可以在Lambda上上傳了。

暫無
暫無

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

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