繁体   English   中英

VSCODE PYTHON - ModuleNotFoundError:没有名为“src”的模块

[英]VSCODE PYTHON - ModuleNotFoundError: No module named 'src'

我在“cmd”中使用 pytest 进行了单元测试,它工作正常,但是当我尝试导入我的主文件时,我得到一个导入错误。 这是我的文件树结构:

MATCHING_CC/
- pytest.ini
- __init__.py               (empty file)
- conftest.py               (empty file)
- src/
    - __init__.py           (empty file)
    - conftest.py           (empty file)
    - matching_ingr_zing.py
    - services/
        - __init__.py       (empty file)
        - ElasticSearch.py
        - ingredient_extractor_for_search.py
        - metrics.py
        - stop_word_matching.py
- models/        (folder to save trained models)
- tests/
    - __init__.py                (empty file)
    - test_services/
        - __init__.py            (empty file)
        - test_elastic_search.py
        - test_ingredient_extractor_for_search.py
        - test_metrics.py
    - test_src/
        - __init__.py                (empty file)
        - test_matching_ingr_zingr.py

这是问题的图像:错误

如果有人可以帮助我并解释我的错误是什么,我将不胜感激。

您的程序似乎不知道在哪里找到src 这可能会解决问题。

import sys
  
# adding src to the system path
sys.path.insert(0, '/home/USERNAME/PATH/TO/src')
  
from src import something

这是一个解释:

ModuleNotFoundError,因为默认情况下python解释器只会检查当前目录中的文件,我们需要手动设置文件路径才能从另一个目录导入模块。 我们可以使用各种方式来做到这一点。 下面将详细讨论这些方式。

使用 sys 模块

我们可以使用 sys.path 将新的不同文件夹(我们要导入模块的文件夹)的路径添加到系统路径,这样 python 也可以在该目录中查找模块,如果它没有找到模块在其当前目录中。 由于 sys.path 属于列表类型类,所以我们可以很容易地使用 insert 方法添加文件夹路径。

进一步阅读: https ://www.geeksforgeeks.org/python-import-module-from-different-directory/

您需要从父目录MATCHING_CC_TEST而不是从src运行测试:

由于matching_ingr_zing.py已经在src目录中,你不需要在文件导入的开头添加src

只需这样做:

from services.ingredient_extractor_for_search.py import ... as ... 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM