如何从不同的包导入python模块

判断

我有一个包含 unittest 的 python 应用程序。下面是我的文件结构

├── src
│   ├── common
│   │    ├──constants.py
│   │    └──configs.py
│   ├── utils
│   │    ├──module1.py
│   │    └──module2.py
│   └── service
│   │     ├──module3.py
│   │     └──module4.py
│   └── main.py
├── test
│   ├── utils
│   │    ├──test_module1.py
│   │    └──test_module2.py

utils/module1.py 包含

# module1.py
from common.constants import LOG_FORMAT, TIME_FORMAT
...

test_module1.py 包含

# test_module1.py
import sys
sys.path.append(".")
from src.utils.module1 import filter_file
from unittest import TestCase, main, mock

当我从 root 运行下面的代码时,会发生异常。

$- python3 test/utils/test_module1.py
$- ModuleNotFoundError: No module named 'common'

我正在使用Linux机器。当我尝试添加“src”时它会起作用。在 module1.py 中的每个模块导入之前。但我不想更改 src 中的代码,因为我已经对它进行了 dockerized。请提出你的想法。

程序员

要附加包含目录test,并srcsys.path,然后访问topleveldir/src/utils/module1.py使用src.utils.module1该模块尝试导入文件topleveldir/common/constants.py,但文件实际上位于topleveldir/src/common/constants.py- 这一定ModuleNotFound出错。更改sys.path.append(".")sys.path.append("./src")src.从下面的导入中删除,它应该可以正常工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章