使用AWS Lambda将推送通知发送到Python中的Pusher应用程序。当我将Pusher及其所有依赖项安装到目录并压缩到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 :(得分: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
将包含您需要的所有内容。
答案 1 :(得分:0)
这可能听起来很愚蠢,但不要命名你的本地变量pusher。 lambda函数中的变量绑定在执行期间发生,并且在您可能不期望的范围内发生。
我并不是建议这是完整的答案,而是执行import pusher
并更改为myPusher = pusher.Pusher...
以查看错误消息是否发生更改。如果它没有,则问题出在其他地方。
答案 2 :(得分:0)
将空__init__.py
文件添加到ndg
目录可修复此问题。