代码之家  ›  专栏  ›  技术社区  ›  Dan

AWS Lambda Python-如何将模块从本地文件导入app.py

  •  0
  • Dan  · 技术社区  · 3 年前

    这是一个简单的基于SAM模板的部署,带有Docker容器。文件系统结构:

    src/app.py
        mymodule.py
    

    在app.py中:

    from .mymodule import myfunction
    

    结果(调用时):

    Unable to import module 'app': attempted relative import with no known parent package
    

    删除点会导致:

    Unable to import module 'app': No module named 'mymodule'
    

    将本地目录添加到路径也没有帮助:

    import os, sys
    currentdir = os.path.dirname(os.path.abspath(__file__))
    sys.path.append(currentdir)
    

    现在我想这似乎是由于以下伟大答案中描述的局限性 Relative imports for the billionth time

    即app.py是作为脚本而不是模块运行的,并且 脚本无法相对导入

    上述答案中的解决方案都需要更改Lambda函数的构建和/或调用方式——问题是如何做到这一点?

    0 回复  |  直到 3 年前
        1
  •  1
  •   kib gabriel    2 年前

    添加 __init__.py 文件到src文件夹(与ur-app.py级别相同)

    或者,如果您正在使用容器,请确保Dockerfile复制所有内容,而不仅仅是app.py