бессерверная aws python lambda не может импортировать модуль из родительского каталога

#python #aws-lambda #serverless-framework

#python #aws-lambda #бессерверный фреймворк

Вопрос:

У меня следующая структура

введите описание изображения здесь

Я пытаюсь импортировать утилиты внутри handler.py

Я попытался дать как

 from src.utils import *
from utils import *
  

также пытался добавить

 import os
import sys

sys.path.append(os.path.dirname(os.path.realpath(__file__)))
  

и

 import os
    import sys
    
    sys.path.append('src')
  

но ничего не работает

Я использую бессерверную платформу, а не загружаю zip-файл вручную

Много пробовал, но ничего не работает…

Любая помощь, высоко ценится.

Спасибо

Комментарии:

1. Это сбивает с толку, потому что, исходя из того, что вы предоставили, это кажется правильным, у вас где-то есть опечатка? Или где вы видите ошибку импорта, это когда вы развертываетесь в среде или вы видите из IDE, что вы не можете получить доступ к чему-либо из утилит?

2. избавьтесь от каталога src и переместите свои скрипты python на корневой уровень. aws.amazon.com/premiumsupport/knowledge-center /…

3. Вы решили это?

Ответ №1:

Вы можете установить serverless-functions-base-path плагин и использовать.

Ознакомьтесь с руководством по плагину здесь https://www.serverless.com/plugins/serverless-functions-base-path

Если ваш бессерверный файл.yml и src в каталоге, вы можете добавить это к вашему бессерверному файлу.yml и попробовать развернуть

 custom:
  functionsBasePath: src

plugins:
  - serverless-functions-base-path
  

Ответ №2:

Для этого вы можете использовать бессерверный плагин python-requirements.

Он может быть установлен локально или на конвейере с

 sls plugin install -n serverless-python-requirements 
  

Вы можете добавить это в свой бессерверный файл.yml и попробовать развернуть

 # this part might not be needed depending on size of utils
custom:
  pythonRequirements:
    zip: true

# This plugin allows us import dependencies
plugins:
  - serverless-python-requirements
  

Ознакомьтесь с руководством по плагину здесь

https://www.serverless.com/blog/serverless-python-packaging

https://www.npmjs.com/package/serverless-python-requirements