python - 在 Pytest 中使用本地导入
问题描述
我从来没有真正完全理解 Python 是如何处理包的,我现在遇到了问题。但是谷歌搜索似乎没有帮助,因为我发现这个话题真的很混乱。
我有一个具有这种结构的项目:
project_name/
src/
main.py
utils/
string_utils.py
tests/
test_string_utils.py
我正在使用 Pytest 运行单元测试,目前在“test_string_utils.py”文件中我有以下内容:
from ..src.utils.string_utils import StringUtilsClass
但是我转到文件夹“project_name”并尝试使用以下任何命令运行测试我得到错误:
$ pytest tests/
ValueError:尝试相对导入超出顶级包
我知道 python 的 -m 参数,但似乎运行“pytest -m”具有完全不同的行为。
我该如何解决这个问题?我是否使用了错误的文件夹架构?我不认为我正在构建的应该是一个 pip 包(这将简化导入)
解决方案
您是否尝试过:from src.utils.string_utils import StringUtilsClass
没有 .. 在 src 之前?或者from string_utils import StringUtilsClass