VSCode无法从虚拟环境中正确运行pytest

11

我刚刚发现 vscode 可以直接在编辑器中运行 pytest,这很棒——如果它能正常工作的话。

目前我正在一个虚拟环境内开发项目,在 vscode 中已经正确配置(并激活)了该虚拟环境。pytest 已经在虚拟环境中安装并且也已经被激活,我编写的测试也得到了预期的发现。但是每当我运行一个测试时,它都会提示找不到我当前正在工作的模块,并引发 ModuleNotFoundError

我使用 pip install -e . 安装了此模块。在 vscode 之外的普通终端控制台上运行相同的测试符合预期。

无论 pytest 是否仅针对工作区和/或用户启用都没有任何区别。

示例代码:

def test_something():
   from mymodule.config import Config
   ...

输出:

E       ModuleNotFoundError: No module named 'mymodule'

Pip 示例输出:

mymodule               0.1.0     /path/to/mymodule

奇怪的是,vscode可以运行正确的pytest脚本(它没有全局安装,只安装在这个环境中),并且带有所有已安装的插件(例如pytest-datafiles)。

你有任何想法吗?

敬礼,Thomas


你有任何想法吗? 敬礼,Thomas

my_module 是一个目录吗? - Matiiss
这实际上是一个包。我刚才发现代码中有个打字错误。 - brillenheini
一切都好吗? - Matiiss
不,这个错别字只是来自一个示例代码,在我的真实项目中它并不起作用,尽管我的模块已经存在并安装了。 - brillenheini
它通过pip以可编辑模式安装。如上所述,pytest在普通终端中运行正常,但在vscode中无法运行。 - brillenheini
显示剩余2条评论
1个回答

13

我尝试了一下路径设置。最终通过将 pytest 的完整路径作为工作区设置来使其运行。

"python.testing.pytestPath": "/home/thomas/.virtualenvs/edis/bin/pytest"

不要问我为什么即使在虚拟环境的路径中也安装了pytest,VSCode仍然无法正常工作。

敬礼,Thomas


我花了很多时间试图弄清楚这个问题,尝试了所有的方法。这是唯一有效的解决方案。非常感谢! - Sorix
太棒了!真希望我早点(而且是自己)想到这个。非常感谢……这也解决了一个极其烦人的问题,我的VS Code pylint找不到一些模块。 - Beorn Harris
VScode 如何查找虚拟环境的逻辑在这里:https://code.visualstudio.com/docs/python/environments。 - Philippe

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