Python中的模块层次结构问题

nkoocmlb  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(122)
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
但是当我使用mt-kart目录中的pytest运行一些测试时,它会抱怨。然后下面的测试对pytest有效。但是我担心它可能给予在一些不同的情况下出错。
from src.data_kart.models.modelx import model1
本项目使用FastApiOpenApI Code generators

编辑------------------

conftest.py中,我将src添加到sys.path,路径对于我的问题2工作正常。sys.path.append(os.getcwd()+"/src")

blmhpbnm

blmhpbnm1#

您可以在PYTHONPATH中添加包含软件包的目录,如here所示。例如,如果您使用的是Windows,则软件包的目录应如下所示:C:/users/.../mt-kart/src。在将路径添加到环境变量之后,请确保启动一个新的终端来运行pytest
通过在PYTHONPATH中添加C:/users/.../mt-kart/src,这意味着您可以像这样导入模块:from data_kart.models.modelx import model1(正如您的 * 前任开发人员 * 所做的那样)和from defaults import func1应该按预期工作。每次从data_kart包导入模块时,它都会指向PYTHONPATH变量中给定的目录。因此,导入模块时不需要将sys.path.append(...添加到项目(或测试文件)中每个文件的顶部。

相关问题