导入由位置导入的文件会生成 ModuleNotFoundError

问题描述 投票:0回答:1

(旧标题:解决从按文件名导入的模块导入时出现的 ModuleNotFoundError 问题)

我有以下项目结构

. Root
|--lambdas/
|   |-- lambda-1/
|       |-- lambda_function.py
|       |-- lambda_context.py
|-- tests
    | -- unit
        |-- test_my_lambda.py

lambda_function.py 从 lambda_conext.py 导入

from lambda_context import SomeClass
from lambda_context import function_xyz

我将 lambda_function 导入到 test_my_lambda.py 中:

spec = importlib.util.spec_from_file_location("lambda_function", ansolute_path_to_lambda_function/lambda_function.py)
module_name = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module_name)

我运行 pytest:

c:\path_to_project_root\tests> python -m pytest unit\test_my_lambda.py

pytest 失败并显示:

..\lambdas\lambda-1\lambda_function.py:14: in <module>
    from lambda_context import SomeClass
E   ModuleNotFoundError: No module named 'lambda_context'

如何解决此错误?

pytest python-importlib
1个回答
0
投票

导入路径,我相信。

import sys

sys.path.insert(0, '../../../lambda/lambda-1')
© www.soinside.com 2019 - 2024. All rights reserved.