ModuleNotFoundError: 没有名为“pytest”的模块

御弟哥*_*弟哥哥 15 python pytest

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

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

import pytest


def test_main():
    assert 5!=5

if __name__ == "__main__":
    pytest.main()
Run Code Online (Sandbox Code Playgroud)

错误如下?

[运行] python -u "d:\MyPytest\test_sample.py" 回溯(最近一次调用):文件“d:\MyPytest\test_sample.py”,第 1 行,在 import pytest ModuleNotFoundError: No module named 'pytest' [完成] 在 0.185 秒内以代码 = 1 退出

Nat*_*han 20

TLDR:我怀疑你安装pytest你的系统级内python站点包,所以当你尝试运行pytest,你的内virtualenv,它抛出一个ModuleNotFoundError,因为它没有你的内安装了这种依赖性virtualenv。虚拟环境为您提供了一个沙盒环境,因此您可以python为您的项目试验潜在的库,但它们是自包含的,无法访问您的系统级 python 第三方库。

通常,ImportError导入语句无法成功导入指定的模块时会引发 an 。如果问题是由于无效或不正确的路径造成的,这将引发ModuleNotFoundError.

从你的问题来看,不清楚你安装在哪里,pytest因为你说你在你的系统级站点包中安装了它,virtualenv然后你说你将它安装virtualenv在你的系统级python站点包之外..所以我会给出我pytestvirtualenv.这可能是你想要的:

Virtualenv 很好,因为它们为您提供了一个沙盒环境来使用 python 库,不会弄乱您的系统级python配置。现在ModuleNotFoundError被抛出到您的内部,virtualenv因为它找不到pytest您尝试运行的测试的模块。也许你可以尝试激活您virtualenv和重新安装pytest在此virtualenv,如果这种行动解决您的问题看:

激活您的虚拟环境:

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

# Windows
\path\to\env\Scripts\activate
Run Code Online (Sandbox Code Playgroud)

pytest在您的 virtualenv 中安装:

注意virtualenv's在安装之前,您应该会在括号中看到您的姓名pytest。对于此示例,假设您创建了一个名为:env

(env) pip install pytest
Run Code Online (Sandbox Code Playgroud)

现在pytest将在您的virtualenv. 有关更多信息,请查看 checkoutvirtualenv文档。我还建议研究virtualenvwrapper,它很好地环绕virtualenv了更方便的命令来激活/停用virtualenvs

希望这有帮助!


小智 13

如果不是 virtualenv 的情况,请尝试python3 -m pytest.