我正在嘗試建立一個基於 python 的 AWS Lambda 函數,並且需要導入一個模組。我按照中的說明進行操作建立部署包 (Python)在亞馬遜上。
當我建立並上傳 ZIP 檔案時,ZIP 包括:
在 usaddress 資料夾中,我放置了 usaddress 依賴項,儘管我只是猜測它們所屬的位置。
無論如何,當我將文件上傳到 Lambda 時,會回傳錯誤:
{
"errorMessage": "Unable to import module 'Tester2'"
}
START RequestId: e9c2cafe-3705-11e6-a289-5366a5578765 Version: $LATEST
Unable to import module 'Tester2': No module named future.builtins
END RequestId: e9c2cafe-3705-11e6-a289-5366a5578765
該檔案正在匯入 usaddress/pycrfsuite/_pycrfsuite.pyd 檔案usaddress/pycrfsuite __init_
。 _pycrfsuite 位於正確的目錄中,但我不知道為什麼它被忽略。
我該如何讓它發揮作用?
答案1
經過大量研究,我意識到 .pyd 文件(這是被忽略的文件的文件類型)是編譯的 cython 文件,並且它們在 DOS 和 UNIX 系統上的編譯方式不同。因此,我開啟了一個 EC2 實例,安裝了 usaddress、依賴函式庫,並複製了 ec2 實例編譯的 .so 檔案。
最終成功了,所以這實際上是系統檔案不相容的問題。