Python 中的模块层次结构问题

问题描述 投票:0回答:1
mt-kart
     |
      --> src/data_kart
     |        |
     |         --> apis
     |        |       |
     |        |        --> __init__.py
     |        |        --> endpoints.py
     |        |
     |         --> models
     |        |       |
     |        |        --> __init__.py
     |        |        --> modelx.py
     |        |
     |         --> defaults.py
     |         --> main.py
      --> tests
             |
              --> __init__.py
             |
              --> conftest.py
             |
              --> test_others.py

main.py
当我尝试参考时,我得到
module not found error

from defaults import func1

但这有效:

from .defaults import func1

它应该在没有“.”的情况下工作。对吗?

2.

endpoints.py
我应该如何参考
modelx.py
?我以前的开发人员的情况如下:

from data_kart.models.modelx import model1

但是当我使用

pytest
目录中的
mt-kart
运行一些测试时,它会抱怨。然后以下内容适用于
pytest
。但我担心在某些不同的情况下它可能会出错:

from src.data_kart.models.modelx import model1

该项目使用

FastAPI
OpenAPI Code generators

编辑

conftest.py
中,我将
src
添加到
sys.path
,路径对于我的问题运行良好
2
sys.path.append(os.getcwd()+"/src")

python fastapi openapi-generator modulenotfounderror
1个回答
0
投票

您可以在

PYTHONPATH
中添加包含您的包的目录,如此处所示。例如,如果您使用的是 Windows,则包的目录应如下所示:
C:/users/.../mt-kart/src
。将路径添加到环境变量后,请确保启动新终端来午餐
pytest

通过在

C:/users/.../mt-kart/src
中添加
PYTHONPATH
,这意味着您可以像这样导入模块:
from data_kart.models.modelx import model1
(就像您的以前的开发人员所做的那样)并且
from defaults import func1
应该按预期工作。每次从
data_kart
包导入模块时,它将指向
PYTHONPATH
变量中给出的目录。因此,无需将
sys.path.append(...
添加到项目(或测试文件)中每个文件的顶部来导入模块。

© www.soinside.com 2019 - 2024. All rights reserved.