我有一个项目,我想在其中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的" Discover Tests"功能或尝试使用调试器逐步浏览文件时,我会收到一个错误'modulenotfounderror:no Module nature new nater Project'。
有人知道如何解决这个问题吗?
我也有同样的问题。对我有用的解决方案是引入一个.env
文件,该文件与我的工作区文件夹相对于我的PYTHONPATH
条目。
PYTHONPATH="path1:path2:pathN"
然后,我在工作空间设置中添加了一行,该线路指定了我的.env
文件的位置。
// ...
"python.envFile": "${workspaceFolder}/.env",
// ...
我遇到了相同的问题,即我能够在VSCODE内的终端成功运行pytest
和python -m pytest
,但是发现失败了。我的解决方案是通过以下方式实施失败的导入
import sys
sys.path.insert(0, '/full/path/to/package1/')
from package1.module1 import module1
请注意,vScode是打开的,project
文件夹是根。
下一个解决方案适用于Linux和Windows,
import sys
from pathlib import Path
sys.path.insert(0, str(Path('package1/').resolve()))
它基于@chufolon答案。我的Stackoverflow声誉不允许我对他的答案发表评论。我更喜欢他的解决方案,因为在.env
中,出于安全原因,可能会有不应共享的敏感信息(密码,...(。还因为默认通过git共享 __init__.py
。