包括Python AWS Lambda功能中的降压转换器依赖性



我正在构建一个包裹以将其作为AWS lambda函数上传。试图包括对Markdown 2.6.8(Markdown的Python实现(的依赖。尝试测试功能时,我会得到错误Unable to import module 'markdown-convert': No module named markdown。我从其他类似的问题中可以看到,我可能需要编译Amazon Linux中的依赖项文件,以使其可与Lambda一起使用。我不熟悉Python,想知道我是否还应该探索该代码在鸡蛋中打包的方式,以及这是否影响依赖性的导入方式。您建议我追求解决错误?

这是我的软件包的文件结构:

    .
    ├── markdown
    │   ├── blockparser.py
    │   ├── blockprocessors.py
    │   ├── extensions
    │   │   ├── abbr.py
    │   │   ├── admonition.py
    │   │   ├── attr_list.py
    │   │   ├── codehilite.py
    │   │   ├── def_list.py
    │   │   ├── extra.py
    │   │   ├── fenced_code.py
    │   │   ├── footnotes.py
    │   │   ├── headerid.py
    │   │   ├── __init__.py
    │   │   ├── meta.py
    │   │   ├── nl2br.py
    │   │   ├── __pycache__
    │   │   │   ├── abbr.cpython-34.pyc
    │   │   │   ├── admonition.cpython-34.pyc
    │   │   │   ├── attr_list.cpython-34.pyc
    │   │   │   ├── codehilite.cpython-34.pyc
    │   │   │   ├── def_list.cpython-34.pyc
    │   │   │   ├── extra.cpython-34.pyc
    │   │   │   ├── fenced_code.cpython-34.pyc
    │   │   │   ├── footnotes.cpython-34.pyc
    │   │   │   ├── headerid.cpython-34.pyc
    │   │   │   ├── __init__.cpython-34.pyc
    │   │   │   ├── meta.cpython-34.pyc
    │   │   │   ├── nl2br.cpython-34.pyc
    │   │   │   ├── sane_lists.cpython-34.pyc
    │   │   │   ├── smart_strong.cpython-34.pyc
    │   │   │   ├── smarty.cpython-34.pyc
    │   │   │   ├── tables.cpython-34.pyc
    │   │   │   ├── toc.cpython-34.pyc
    │   │   │   └── wikilinks.cpython-34.pyc
    │   │   ├── sane_lists.py
    │   │   ├── smart_strong.py
    │   │   ├── smarty.py
    │   │   ├── tables.py
    │   │   ├── toc.py
    │   │   └── wikilinks.py
    │   ├── __init__.py
    │   ├── inlinepatterns.py
    │   ├── __main__.py
    │   ├── odict.py
    │   ├── postprocessors.py
    │   ├── preprocessors.py
    │   ├── __pycache__
    │   │   ├── blockparser.cpython-34.pyc
    │   │   ├── blockprocessors.cpython-34.pyc
    │   │   ├── __init__.cpython-34.pyc
    │   │   ├── inlinepatterns.cpython-34.pyc
    │   │   ├── __main__.cpython-34.pyc
    │   │   ├── odict.cpython-34.pyc
    │   │   ├── postprocessors.cpython-34.pyc
    │   │   ├── preprocessors.cpython-34.pyc
    │   │   ├── serializers.cpython-34.pyc
    │   │   ├── treeprocessors.cpython-34.pyc
    │   │   ├── util.cpython-34.pyc
    │   │   └── __version__.cpython-34.pyc
    │   ├── serializers.py
    │   ├── treeprocessors.py
    │   ├── util.py
    │   └── __version__.py
    ├── Markdown-2.6.8.egg-info
    │   ├── dependency_links.txt
    │   ├── installed-files.txt
    │   ├── PKG-INFO
    │   ├── SOURCES.txt
    │   └── top_level.txt
    └── markdown-convert.py

markdown-convert.py的内容:

import markdown
def lambda_handler(event, context):
    parsedHTML = {}
    parsedHTML[u'text'] = markdown.markdown(event[u'text'])
    return parsedHTML

最佳建议是在本地开发机上使用virtualenv,并使用pip安装软件包。

然后,当您准备就绪时,通过递归复制<your-virtual-env>/lib/python2.7/site-packages/*的全部内容来制作Lambda包。确保内容放在zip包的根部。这非常重要!

请在此处找到更多详细信息:

http://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-to-create-deployment-package.html

最新更新