2016-03-22 131 views
0

使用AWS Lambda將推送通知發送到Python中的Pusher應用程序。當我將Pusher及其所有依賴項安裝到一個目錄並將其壓縮到Lambda時,我會運行一個簡單的測試並獲取此錯誤。Python推杆AWS Lambda

No module named ndg.httpsclient.ssl_peer_verification 

這是我試圖運行的代碼。

from pusher import Pusher 

pusher = Pusher(app_id=u'id', key=u'key', secret=u'secret') 
def createPitchZip(context, event): 
    pusher.trigger('testchannel', 'testevent', {u'some': u'data'}) 

我已經看過幾篇文章,但單獨安裝依賴關係似乎沒有幫助。

謝謝!

編輯

這裏是堆棧跟蹤

No module named ndg.httpsclient.ssl_peer_verification: ImportError 
Traceback (most recent call last): 
    File "/var/task/lambda.py", line 5, in createPitchZip 
    pusher = Pusher(app_id='***', key='***', secret='***') 
    File "/var/task/pusher/pusher.py", line 42, in __init__ 
    from pusher.requests import RequestsBackend 
    File "/var/task/pusher/requests.py", line 12, in <module> 
    import urllib3.contrib.pyopenssl 
    File "/var/task/urllib3/contrib/pyopenssl.py", line 49, in <module> 
    from ndg.httpsclient.ssl_peer_verification import SUBJ_ALT_NAME_SUPPORT 
ImportError: No module named ndg.httpsclient.ssl_peer_verification 

回答

0

將一個空的__init__.py文件添加到ndg目錄解決了此問題。

0

我會建議你使用virtualenv跟蹤依賴。

這裏是你可能需要做一個psedo步驟:

1. virtualenv env 
2. env/bin/pip install <your packages> 
3. cd env/lib/python2.7/site-packages; zip -r mylambda.zip * 
4. also zip your lambda handler 

如果正確安裝的一切,然後zip文件mylambda.zip將包含你所需要的一切。

+0

Yah我看到他作爲AWS文檔vs'pip install -t目錄推送器'中的其他選項,我會給它一個回去找回你。感謝您的建議。 – jamesmpw

+0

剛剛通過你的過程,(這比pip安裝順便多了),我仍然得到相同的錯誤。我添加了追溯到我原來的帖子,以獲得更多的澄清。請求包正在進行中。 – jamesmpw

0

這可能聽起來很愚蠢,但不要說出你的本地變量推動者。 lambda函數中的變量綁定在其執行期間發生的很晚,並且在您可能不期待的範圍內。

我不是說這是完整答案,而是做一個import pusher並更改爲myPusher = pusher.Pusher...以查看錯誤消息是否更改。如果沒有,那麼問題在於別處。

+0

這是非常好的評論。 –

+0

有趣。勒梅給它一個旋風。 – jamesmpw

+0

給它一個鏡頭。相同的ImportError。即使離開它。好點子。 – jamesmpw