Python 如何从相对路径中为pip3模块添加前缀

Python 如何从相对路径中为pip3模块添加前缀,python,pip,python-requests,Python,Pip,Python Requests,我有AWS Lambda的代码,文件树看起来有点像这样: /. /.. /Class1.py /Class2.py /Class3.py /libs /module1 /module2 /module3 libs目录中的一个模块是在\uuuu init.py\uuuu中对存储在同一子目录中的另一个模块具有相对导入的请求。不幸的是,Python3正在sys.path 在pip3中使用标志--install option=--prefix=./libs安装不起作用(只有di

我有AWS Lambda的代码,文件树看起来有点像这样:

/.
/..
/Class1.py
/Class2.py
/Class3.py
/libs
    /module1
    /module2
    /module3
libs
目录中的一个模块是在
\uuuu init.py\uuuu
中对存储在同一子目录中的另一个模块具有相对导入的请求。不幸的是,Python3正在
sys.path

在pip3中使用标志
--install option=--prefix=./libs
安装不起作用(只有dist infos出现在
libs
目录中)


如何处理此问题?

使用
pip
将依赖项安装到虚拟环境中,然后创建包含该虚拟环境和功能代码的zip文件,并将其上载到AWS Lambda。您可以找到有关如何执行此操作的详细说明。

您可以尝试添加到sys.path

假设模块1,则应导入模块2

比模块1中的更大。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))

我不运行它,假设它能帮上忙。

在模块升级后它会工作吗?将来Class1会导入并创建Class2的实例吗?它也会工作吗?我想是的,如果会保存相对路径。看起来它现在正在工作-还没有上传到AWS。谢谢!如果这个答案对您有用,请使用绿色复选标记,将其标记为此问题的“已接受答案”。这向未来的读者发出信号,表明该解决方案可行,也可能适用于他们。