如何在lambda项目上的python中正确导入模块

时间:2019-04-10 10:06:23

标签: python lambda package python-import

我正在用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 *

但这不起作用

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

2 个答案:

答案 0 :(得分:1)

使用

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

# a.py files
from .b import *

# b.py files
from .a import *

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

答案 1 :(得分:0)

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

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