模块未找到错误:没有名为'pytest'的模块。

40

在虚拟环境中安装pytest模块后,我使用Python代码调用并运行提示符以找到pytest模块。

我在虚拟环境之外安装了pytest模块。 我可以正常使用Python调用它。

import pytest


def test_main():
    assert 5!=5

if __name__ == "__main__":
    pytest.main()

错误如下:

[运行] python -u "d:\MyPytest\test_sample.py" Traceback (most recent call last): File "d:\MyPytest\test_sample.py", line 1, in import pytest ModuleNotFoundError: 没有名为 'pytest' 的模块 [完成] 在 0.185 秒内以代码 1 退出


遇到了同样的问题。在我的情况下,问题是我使用pip3.9安装了pytest,而我使用Python 3.8构建了虚拟环境并使用pip3.8安装了先前的软件包。因此,也许您在虚拟环境中使用了不同的Python版本或pip版本。 - Bart
5个回答

43

TLDR: 我怀疑你在系统级别的 python site-packages 中安装了 pytest,所以当你试图在 virtualenv 中运行 pytest 时,它会抛出一个 ModuleNotFoundError,因为在你的 virtualenv 中没有安装这个依赖项。虚拟环境为你提供了一个沙盒环境,使你能够尝试潜在的 python 库用于你的项目,但它们是自包含的,并且无法访问你的系统级别的 python 第三方库。

ImportError 通常在导入模块指定模块时发生错误时引发。如果问题是由于无效或不正确的路径引起的,则会引发 ModuleNotFoundError

从你的问题中,不清楚你安装了 pytest 的位置,因为你说你在 virtualenv 中安装了它,然后又说你在系统级别的 python site-packages 中安装了它。因此,我将提供我的想法,以使 pytestvirtualenv 中正常工作,因为这可能是你想要的:

Virtualenv 很好用,因为它们为你提供了一个沙盒环境来尝试 python 库,避免了破坏你的系统级别的 python 配置。现在,ModuleNotFoundError 在你的 virtualenv 中抛出,因为它找不到你要运行的测试的 pytest 模块。也许你可以尝试激活你的 virtualenv 并在其中重新安装 pytest,看看这个解决方案是否可以解决你的问题:

激活你的虚拟环境:

# Posix systems
source /path/to/ENV/bin/activate

# Windows
\path\to\env\Scripts\activate

在您的虚拟环境中安装pytest

注意:在安装pytest之前,您应该在圆括号中看到您的virtualenv名称。 对于本示例,假设您创建了一个名为env的虚拟环境。

(env) pip install pytest

现在您可以在您的 virtualenv 中使用 pytest 了。有关更多信息,请查看 virtualenv文档。我还建议您查看 virtualenvwrapper,它可以很好地包装 virtualenv ,提供更方便的命令来激活/停用 virtualenvs

希望能对您有所帮助!


1
你好,我可以在命令行上激活虚拟环境,但是当我在VSCode的代码运行插件中运行代码时,无法找到模块。在VSCode中,我也激活了虚拟环境。 - 御弟哥哥
所以你需要确保在你的虚拟环境中看到pytest,通常它位于你的主目录和.virtualenvs文件夹中:~/.virtualenvs/<env>/lib/<python_ver>/site-packages。如果你在那里看到它,那么你就不必安装它,如果没有在该虚拟环境中安装它。然后在你的Visual Studio Code IDE中,你需要指定使用这个虚拟环境。请查看https://code.visualstudio.com/docs/python/environments,然后你应该能够使用代码运行器运行你的项目。 - Nathan
@御弟哥哥,我的回答对你有帮助吗? - Nathan

13

如果不是虚拟环境的情况,那么尝试 python3 -m pytest


2
Python错误“ModuleNotFoundError:找不到名为'pytest'的模块”出现的原因有多种:
  1. 没有通过运行pip install pytest安装pytest包。
  2. 在与您正在使用的Python版本不同的Python版本中安装软件包。
  3. 全局安装软件包而不是在虚拟环境中安装。
  4. 您的IDE运行了错误版本的Python。

请参见此处的详细信息。


0
在我的情况下,如果我使用VSCode终端,我会得到相同的错误。 然后我尝试了使用CMD,它可以工作。 因此,我建议使用系统终端而不是任何第三方终端。
cmd: python -m pytest

0
在我的情况下,我实际上已经安装了它。 重启终端并重新进入虚拟环境对我有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接