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

时间:2019-03-30 19:38:20

标签: python pip python-requests

我有适用于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目录中。

如何处理?

2 个答案:

答案 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))

我不会运行它,因为它可以提供帮助。