Принудительный импорт зависимостей из отдельного места (AWS Lambda) - PullRequest
0 голосов
/ 30 мая 2020

Я работаю с функцией AWS Lambda и имею несколько зависимостей.

В качестве примера для упрощения я буду использовать запросы (и да, я знаю, что запросы доступны из Botocore, но у меня есть другие зависимости, которых нет). моя структура проекта выглядит следующим образом:

lambda_function/
    lambda_function.py
    misc/
        __init__.py
        example.py
    packages/
        requests/
        urllib3/
        ...

Каталог packages / был получен путем выполнения pip install requests --target ./packages

в lambda_function.py, у нас есть

from misc.example import foo

В примере .py у нас есть

from packages import requests
def foo():
    return requests.get('example.com')

, что дает ModuleNotFoundError: нет модуля с именем 'urllib3', хотя urllib3 определенно находится внутри пакетов / Я знаю, что этого можно избежать, просто поместив все в один каталог верхнего уровня, но есть довольно много зависимостей, и я хочу, чтобы все было в чистоте. Есть ли способ заставить запросы импортировать из каталога packages / вместо этого или как-то добавить пакеты / в путь? Я уже пробовал делать

sys.path.append(os.path.abspath('lambda_function/packages'))

, но безуспешно.

...