允许从子包和python3中的包导入函数的包结构

时间:2019-08-30 13:06:40

标签: import python-import importerror

我具有以下结构:

sim
++main.py
++run2
++++main.py
++++imex.py
++++report.py
++++utils.py 
++++__init__.py

utils模块在其软件包中具有使用其他模块的功能。就像这样:

run2中的utils.py

import imex
import report

def func_that_uses_imex_report():
    pass

该模块以及关联的对象和功能在其子包中均可以正常运行。所以:

run2中的main.py

import utils

utils.func_that_uses_imex_report()

尽管如此,当在模拟程序包上工作时,发生了关于路径和导入的噩梦。就像这样:

main.py

import run2.utils

run2.utils.func_that_uses_imex_report()

  

ModuleNotFoundError:没有名为imex的模块

我想有一个非常简单的解决方案,但我只是没有意识到。关键是我希望能够在run2子程序包和sim程序包中使用func_that_uses_imex_report()。

另一个问题是,我不能仅将路径追加到sys.path变量中,因为还有其他子包也需要在sim卡中使用模块utils.py。因此,我的文件夹项目的更现实的结构是:

sim
++main.py
++run2
++++main.py
++++imex.py
++++report.py
++++utils.py 
++++__init__.py
++well2
++++frame.py
++++utils.py
++++__init__.py

那该怎么办?

0 个答案:

没有答案