【发布时间】:2019-12-07 23:32:07
【问题描述】:
我有一个项目,我想通过 VS Code 发现测试和其他测试功能来简化测试。当我尝试发现测试时,我遇到了一个问题,即测试文件中的导入中断。
我的文件结构是这样的:
project\
__init__.py
package1\
module1.py
__init__.py
tests\
test.py
__init__.py
在 test.py 我有一行:
import project.package1.module1 as module1
我通过调用根文件夹中的python -m project 来运行我的项目,并且我能够通过调用根文件夹中的python -m pytest project 来成功运行测试。
当我运行 VS Code 的“发现测试”功能或尝试使用调试器单步执行文件时,我收到错误消息“ModuleNotFoundError: No module named project”。
有人知道如何解决这个问题吗?
【问题讨论】:
-
如果它在调试窗格中工作,它应该可以工作:您是否在
launch.json(调试窗格中的齿轮图标)中设置了"name": "Python: Module",配置?您是否设置了正确的解释器? -
我确实有一个条目 ``` { "name": "Python: Module", "type": "python", "request": "launch", "module": "enter- your-module-name-here", "console": "integratedTerminal" }, ``` 在 launch.json 中,我确信解释器是正确的。我正在使用 venv 虚拟环境。
-
好吧,launch.json 设置意味着您无法通过按 F5 键或绿色播放按钮来调试/运行。将
enter-your-module-name-here更改为project,保存 json 即可。 -
我认为这与我导入的方式有关。我正在使用绝对进口,这使得工作的东西很好地工作。问题是我想避免像编辑
sys.path这样的骇人听闻的方法。我不是 Python 专家,导入系统很复杂 -
@Dan 我假设
import os; print(os.getcwd())打印出'/home/dan/Documents/.../Project'为''。你在Project/中没有__init__.py是吗?众所周知,这会使事情变得混乱。我们还在下一个版本中修复了一些测试发现,您可以通过扩展的installing the development build 进行测试。否则,您需要在 github.com/microsoft/vscode-python 上打开一个问题。
标签: python visual-studio-code pytest python-import