还有一个关于python中模块层次结构的查询(问题) [英] yet another query (issue ) with module hierarchy in python

查看:0
本文介绍了还有一个关于python中模块层次结构的查询(问题)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Edit-------------------

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

推荐答案

您可以在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(...添加到项目(或测试文件)中的每个文件的顶部即可导入模块。

这篇关于还有一个关于python中模块层次结构的查询(问题)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆