我用pytest在"cmd"它工作得很好,但当我试图导入我的主文件时,我得到一个导入错误。下面是我的文件树结构:
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。将新的不同文件夹(我们想要导入模块的文件夹)的路径添加到系统路径中,以便python在当前目录中找不到模块时也可以在该目录中查找模块。sys。Path属于列表类型类,所以我们可以很容易地使用insert方法来添加文件夹路径。
进一步阅读:https://www.geeksforgeeks.org/python-import-module-from-different-directory/
您需要从您的父目录MATCHING_CC_TEST
运行test,而不是从src
:
由于matching_ingr_zing.py
已经在src
目录中,因此您不再需要在文件导入开始时添加src
。
只是做:
from services.ingredient_extractor_for_search.py import ... as ...