首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VS代码Python : Path必须在项目或Importerror中

VS代码Python : Path必须在项目或Importerror中
EN

Stack Overflow用户
提问于 2022-08-08 09:53:24
回答 1查看 95关注 0票数 0

因此,在VS代码中,我再次遇到了的问题。我的目录结构如下:

代码语言:javascript
复制
workdir
 __init__.py
 - package
   __init__.py

   - submoduleA
    __init__.py

   - submoduleB
     __init__.py

   ...

   - tests
     __init__.py
     test_A.py
     test_B.py
     ...

因此,基本上,我的包在我的工作中,有一堆子模块和一个测试文件夹。所有东西都有一个__init__.py文件,当我在脚本中导入它并运行它时,它运行得很好。

直到今天早上,我的settings.json如下所示,一切都很顺利:

代码语言:javascript
复制
"python.testing.unittestArgs": [
        "-v",
        "-s",
        ".",
        "-p",
        "test_*.py"
    ],

现在它说:

代码语言:javascript
复制
[ERROR 2022-7-8 11:38:54.740]: Error discovering unittest tests:
 Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/testing_tools/unittest_discovery.py", line 42, in <module>
    suite = loader.discover(start_dir, pattern=pattern, top_level_dir=top_level_dir)
  File "/home/icb/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 349, in discover
    tests = list(self._find_tests(start_dir, pattern))
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 387, in _find_tests
    name = self._get_name_from_path(start_dir)
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 371, in _get_name_from_path
    assert not _relpath.startswith('..'), "Path must be within the project"
AssertionError: Path must be within the project
Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/get_output_via_markers.py", line 26, in <module>

那么现在,就连.也不在这个项目中了?VS代码在这里谈论的这个不祥的项目是什么?

如果我更明确地将我的settings.json设置为:

代码语言:javascript
复制
"python.testing.unittestArgs": [
        "-v",
        "-s",
        "workdir/package/tests",
        "-t",
        "workdir/package/",
        "-p",
        "test_*.py"
    ],

它告诉我:

代码语言:javascript
复制
[ERROR 2022-7-8 11:49:33.496]: Error discovering unittest tests:
 Traceback (most recent call last):
  File "/home/fratajcz/.vscode-server/extensions/ms-python.python-2022.12.0/pythonFiles/testing_tools/unittest_discovery.py", line 42, in <module>
    suite = loader.discover(start_dir, pattern=pattern, top_level_dir=top_level_dir)
  File "/home/fratajcz/anaconda3/envs/compat/lib/python3.7/unittest/loader.py", line 346, in discover
    raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'workdir/package/tests'

如果我用同样的论证从终端运行最单一的测试发现,它就会顺利运行。

我只是不知道了,这是VS Code的又一个讽刺笑话吗?

谢谢你的帮助!

EN

Stack Overflow用户

回答已采纳

发布于 2022-08-09 12:37:23

如果有人对VS代码中的unittest有着相当令人沮丧的体验,那么只需切换到pytest就可以解决这个问题。我现在使用的设置(基本上相同,但在pytest语法中):

代码语言:javascript
复制
"python.testing.pytestArgs": [
        "package/tests/",
        "-v",
        "-k",
        "test_"
    ],
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73275983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档