【问题标题】:how to correctly import modules in python on lambda project如何在 lambda 项目中正确导入 python 中的模块
【发布时间】:2019-08-31 18:07:01
【问题描述】:

我正在 python 中创建一个 lambda 函数。 这是我项目的当前结构。

lambda/
|-- datas/
|   |-- d.json
|
|-- package_name/
|   |-- __init__.py
|   |-- lambda_function.py # this is using d.json
|   |-- a.py # this is some classes used on lambda_function
|   |-- b.py # this is some basic time functions that a.py need
|   |-- utils.py
|
|-- tests/
|   |-- __init__.py
|   |-- test_main.py
|-- setup.py
|-- README

我在导入方面遇到了一些问题。

# lambda_function.py files
from a import *
from utils import *

# a.py files
from b import *

# b.py files
from a import *

它在本地工作,但不在 aws lambda 控制台中。为了让它在 aws lambda 控制台中工作,我需要改变它:

# lambda_function.py files
from package_name.a import *

所以我的第一个问题是:为什么?

我的第二个问题是:如果我想在tests/tests_main.py 中导入package_name/a.py,我应该怎么做?

我试过了

from a import *
from package_name import *

但它不起作用

即使在阅读了互联网对此的评论后,我仍然对导入的工作方式有些迷茫。 此外,我不确定我的项目文件结构(但我猜这是另一个主题)

【问题讨论】:

    标签: python lambda package python-import


    【解决方案1】:

    您可以尝试将当前工作目录路径添加到 python 库路径

    import sys
    sys.path.append('../')
    

    【讨论】:

      【解决方案2】:

      使用

      # lambda_function.py files
      from .a import *
      from .utils import *
      
      # a.py files
      from .b import *
      
      # b.py files
      from .a import *
      

      这将告诉从当前目录读取模块并导入所有 函数、类、变量。

      【讨论】:

      • 这适用于 aws lambda 控制台。但是在本地,我收到此错误: ModuleNotFoundError: No module named 'main.a'; 'main' 不是一个包。 aws lambda 控制台和我在 vscode 上本地执行 lambda_function.py 有什么区别?
      • @MatthieuVeron 您可以使用python-lambda-local 之类的东西在本地测试您的功能。
      • @MatthieuVeron 是你的主要包名?
      • @MatthieuVeron 你能告诉你什么是 main 吗,你在代码中写了什么?最好添加部分错误出现在哪里以及它是什么错误
      • 我没有任何名为“main”的文件。我真的不明白你要我添加什么。这是错误: from .a import * ModuleNotFoundError: No module named 'main.a'; 'main' 不是一个包。当我在 lambda_function.py 上运行代码时出现错误
      猜你喜欢
      • 2021-03-13
      • 2022-10-14
      • 2020-12-02
      • 2021-02-04
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 2020-08-09
      相关资源
      最近更新 更多