在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站点包之外..所以我会给出我pytest在virtualenv.这可能是你想要的:
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。
希望这有帮助!
| 归档时间: |
|
| 查看次数: |
55758 次 |
| 最近记录: |