как правильно импортировать модули в Python на лямбда-проект - PullRequest
3 голосов
/ 10 апреля 2019

Я делаю лямбда-функцию в Python. Вот текущая структура моего проекта.

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. Чтобы он работал в лямбда-консоли aws, мне нужно изменить это:

# lambda_function.py files
from package_name.a import *

Итак, мой первый вопрос: почему?

И второй вопрос: если я хочу импортировать имя_пакета / a.py в tests / tests_main.py, что мне делать?

Я пытался

from a import *
from package_name import *

Но это не работает

Я все еще немного растерялся из-за того, как работает импорт, даже после прочтения того, что интернет сказал об этом. Более того, я не уверен в структуре файлов моего проекта (но это другой вопрос, я думаю)

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

использование

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

# a.py files
from .b import *

# b.py files
from .a import *

это скажет, что из текущего каталога прочитайте модуль и импортируйте все функции, класс, переменные.

0 голосов
/ 10 апреля 2019

Вы можете попробовать добавить свой текущий путь к рабочей директории к пути к библиотекам Python

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