AWS Lambda Python 包 - 没有名为 redis 的模块
AWS Lambda Python package - no module named redis
我有一个 python
包,我想上传到 AWS Lambda
。
该软件包适用于两台不同的机器,完全没有依赖性问题。
但是,将同一文件夹上传到 AWS Lambda
时,出现以下错误:
Unable to import module 'tweet_analyzer_python/lambda_handler': No module named redis
这是包中的文件列表:
.
|-- event.json
|-- lambda_handler.py
|-- redis
| |-- client.py
| |-- client.pyc
| |-- _compat.py
| |-- _compat.pyc
| |-- connection.py
| |-- connection.pyc
| |-- exceptions.py
| |-- exceptions.pyc
| |-- __init__.py
| |-- __init__.pyc
| |-- lock.py
| |-- lock.pyc
| |-- sentinel.py
| |-- utils.py
| `-- utils.pyc
|-- redis-2.10.5-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- SOURCES.txt
| `-- top_level.txt
|-- retrying-1.3.3-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- requires.txt
| |-- SOURCES.txt
| `-- top_level.txt
|-- retrying.py
|-- retrying.pyc
|-- six-1.10.0-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- SOURCES.txt
| `-- top_level.txt
|-- six.py
`-- six.pyc
为了仔细检查,我下载了上传到 AWS Lambda
的同一个 zip
文件,并将其放在干净的 linux 机器上。
当运行:
python tweet_analyzer_python/lambda_handler
我完全没有问题。
谁能解释一下我做错了什么?
谢谢!
当您在本地 运行 'lambda_handler.py' 时,您是在 python 文件中 运行 设置主要方法。然而,lambda 函数直接调用 lambda_handler.py 中的 lambda_handler 方法。
您的 lambda 处理程序未配置为 运行 'lambda_handler.lambda_handler',并且在 'tweet_analyzer_python/lambda_handler'
上失败
或者:
- 1) 将 lambda_handler.py 重命名为 tweet_analyzer_python 或
- 2) 将您的 lambda 处理程序更改为 'lambda_handler.lambda_handler'
更改您的处理程序;在 AWS 中使用 lambda,select 配置,更新处理程序并保存函数。
还要确保你的 redis dep 打包在你压缩的 lambda 函数中。
我有一个 python
包,我想上传到 AWS Lambda
。
该软件包适用于两台不同的机器,完全没有依赖性问题。
但是,将同一文件夹上传到 AWS Lambda
时,出现以下错误:
Unable to import module 'tweet_analyzer_python/lambda_handler': No module named redis
这是包中的文件列表:
.
|-- event.json
|-- lambda_handler.py
|-- redis
| |-- client.py
| |-- client.pyc
| |-- _compat.py
| |-- _compat.pyc
| |-- connection.py
| |-- connection.pyc
| |-- exceptions.py
| |-- exceptions.pyc
| |-- __init__.py
| |-- __init__.pyc
| |-- lock.py
| |-- lock.pyc
| |-- sentinel.py
| |-- utils.py
| `-- utils.pyc
|-- redis-2.10.5-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- SOURCES.txt
| `-- top_level.txt
|-- retrying-1.3.3-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- requires.txt
| |-- SOURCES.txt
| `-- top_level.txt
|-- retrying.py
|-- retrying.pyc
|-- six-1.10.0-py2.7.egg-info
| |-- dependency_links.txt
| |-- installed-files.txt
| |-- PKG-INFO
| |-- SOURCES.txt
| `-- top_level.txt
|-- six.py
`-- six.pyc
为了仔细检查,我下载了上传到 AWS Lambda
的同一个 zip
文件,并将其放在干净的 linux 机器上。
当运行:
python tweet_analyzer_python/lambda_handler
我完全没有问题。
谁能解释一下我做错了什么?
谢谢!
当您在本地 运行 'lambda_handler.py' 时,您是在 python 文件中 运行 设置主要方法。然而,lambda 函数直接调用 lambda_handler.py 中的 lambda_handler 方法。
您的 lambda 处理程序未配置为 运行 'lambda_handler.lambda_handler',并且在 'tweet_analyzer_python/lambda_handler'
上失败或者:
- 1) 将 lambda_handler.py 重命名为 tweet_analyzer_python 或
- 2) 将您的 lambda 处理程序更改为 'lambda_handler.lambda_handler'
更改您的处理程序;在 AWS 中使用 lambda,select 配置,更新处理程序并保存函数。
还要确保你的 redis dep 打包在你压缩的 lambda 函数中。