我有适用于AWS Lambda的代码,文件树看起来有点像这样:
/.
/..
/Class1.py
/Class2.py
/Class3.py
/libs
/module1
/module2
/module3
libs
目录中的一个模块是对存储在同一子目录中的另一个模块在__init.py__
中具有相对导入的请求。不幸的是,Python3正在sys.path
在带有标记--install-option=--prefix=./libs
的pip3中安装不起作用(只有dist-infos显示在libs
目录中。
如何处理?
答案 0 :(得分:1)
使用pip
将依赖项安装到虚拟环境中,然后创建一个包含该虚拟环境和您的功能代码的zip文件,并将其上传到AWS Lambda。您可以找到有关如何进行此操作的详细说明here。
答案 1 :(得分:0)
您可以尝试添加到sys.path。
假设module1,应导入module2。
比module1中的要多。初始化 .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))
我不会运行它,因为它可以提供帮助。