Pytest:ModuleNotFoundError:没有名为“src”的模块

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

我开始学习pytest,稍后我想将它与Travis集成。我已经创建了第一个测试,并且可以毫无问题地从 PyCharm 运行它们。但是当我尝试从 Linux 终端运行 pytest 时,出现以下错误:

Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/python3.6/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
test_prob.py:1: in <module>
    from src.agents import prob
E   ModuleNotFoundError: No module named 'src'

我发现了一些类似的问题和解决方案,但没有一个对我有用。 My project structure looks as follow

python pytest travis-ci
3个回答
14
投票

我遇到了同样的问题,我的解决方案是将

pytest
作为模块执行。

python -m pytest

0
投票

看来您已在 PyCharm 中将

src
标记为“源根”目录(该目录的蓝色表示),这意味着它已添加到 PATH 中。

这就是它在 PyCharm 中运行而不是在 shell 中运行的原因。您的 PyCharm 和终端环境具有不同的

PATH
设置。

尝试更改导入来源

from src.agents import prob

from proj_lokalizacja.src.agents import prob

同时从同一位置运行

pytest
(正如我们在评论中讨论的那样)

如果您不想更改导入语句,则必须更新

PATH
环境变量以包含
src
目录


0
投票

我多次遇到同样的错误。运行

python -m pytest
并不能解决问题,但它可以使 pytest 正常工作。

我的解决方案很简单:

在根目录创建空的

conftest.py
文件。

在这种情况下,它可以帮助

pytest
找到“src”文件夹。

[Exercise] Contact Book App/
|-- src/
|   |-- main.py  
|-- tests/
|   |-- test_main.py
|-- conftest.py  # just empty file
© www.soinside.com 2019 - 2024. All rights reserved.