2016-09-15 50 views
1

錯誤信息 - 無模塊名爲psycopg2
拉鍊使用 文件 - https://github.com/jkehler/awslambda-psycopg2
代碼片段 -
拉姆達蟒蛇功能 - 無模塊名爲psycopg2

#!/usr/bin/python 
import psycopg2 
import sys 
import pprint 
import datetime 

def lambda_handler(event, context): 

#Connect to RedShift 
conn_string = "dbname='XXXX' port='5439' user='XXX' password='XXXX' host='XXXXXXXXXXXX'"; 

conn = psycopg2.connect(conn_string); 
cursor = conn.cursor(); 

cursor.execute("begin transaction"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("delete from XXXX"); 
cursor.execute("insert into XXXX"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("truncate table XXXX"); 
cursor.execute("end transaction"); 

conn.commit(); 
conn.close(); 


提取,並在窗口複製psycopg2放入我的AWS Lambda zip包中 - 與我的python文件和網站包一起。
我錯過了什麼嗎?

編輯
重新包裝與荏苒亞馬遜的Linux文件。同樣的錯誤。

+0

這不是有效的Python代碼。另外:如果你想「捆綁」在一起的軟件包,你應該**凍結你的應用程序,而不是手動複製文件。 – Bakuriu

+0

@Bakuriu - 請你詳細說明我在哪裏搞亂了我的python代碼?我是新來的python和這個代碼在我的Windows機器上執行。 –

+0

也許他指的是缺少縮進,這在Python中很重要。 –

回答

1

psycopg2是一個編譯模塊。複製Windows版本將不起作用,因爲Lambda在Amazon Linux上運行。根據the docs,可以在lambda上運行本機可執行文件和庫,但是您需要找到爲該平臺構建psycopg2並靜態鏈接其所有庫或捆綁動態庫的方法。除非您熟悉C和Python工具鏈,或者其他人已經爲您完成了這一任務,否則這可能會很有挑戰性。

+0

我嘗試在亞馬遜Linux上壓縮文件,但仍然收到相同的錯誤。從我發佈的github鏈接中,psycopg2已經建好了,我只需將它添加到我的目錄中即可。 –