Python 如何从相对路径中为pip3模块添加前缀
我有AWS Lambda的代码,文件树看起来有点像这样: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
/.
/..
/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。谢谢!如果这个答案对您有用,请使用绿色复选标记,将其标记为此问题的“已接受答案”。这向未来的读者发出信号,表明该解决方案可行,也可能适用于他们。