Как префикс модуля pip3 из относительного пути - PullRequest
2 голосов
/ 30 марта 2019

У меня есть код для AWS Lambda, и дерево файлов выглядит примерно так:

/.
/..
/Class1.py
/Class2.py
/Class3.py
/libs
    /module1
    /module2
    /module3

Один из модулей в каталоге libs - это запросы с относительным импортом в __init.py__ для другого модуля, который хранится в том же подкаталоге. К сожалению, Python3 ищет этот модуль в sys.path

Установка в pip3 с флагом --install-option=--prefix=./libs не работает (в каталоге libs отображаются только dist-infos.

Как с этим бороться?

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Установите ваши зависимости в виртуальную среду, используя pip, затем создайте zip-файл, содержащий эту виртуальную среду и код вашей функции, и загрузите его в AWS Lambda.Вы можете найти подробные инструкции о том, как это сделать здесь .

0 голосов
/ 30 марта 2019

Вы можете попробовать добавить в sys.path.

Предположим, что module1 должен импортировать module2.

Чем в module1. init .py:

import os
abspath = os.path.abspath
join = os.path.join
lib_path = abspath(join(dirname(abspath(__file__)), ".."))
sys.path.append(lib_path)
import module2

Или вы можете попробовать использовать модуль imp:

import imp
import os
abspath = os.path.abspath
join = os.path.join
lib_path = abspath(join(dirname(abspath(__file__)), ".."))
(_file, _filename, (_suffix, _mode, _type)) = imp.find_module(
    "module2",
    [lib_path])
module2 = imp.load_module("module2", _file, _filename, (_suffix, _mode, _type))

Я не запускаю его, предполагая, что это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...