在Python中使用带别名的嵌套模块的文件配置

ca1c2owp  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(113)

我有一个Python包,结构如下:

.
├── Module
│   ├── subModule1
│   │   ├── file1.py
│   │   └── file2.py
│   └── subModule2
│       ├── file3.py
│       └── file4.py
└── main.py

其中main.py是我的顶级脚本,它将使用一个名为Module的模块,为了代码组织,我将其分为两个子模块,在文件file<N>.py中有几个函数。
main.py中,我想将模块用作:

import module as m

并使用子模块中的函数:

m.sm1.foo() # foo is a function from submodule1
m.sm2.faa() # faa is a function from submodel2

如何定义__init__.py来实现这一点?
最好的问候

niknxzdl

niknxzdl1#

假设以下层次结构:

.
├── main.py
└── Module
    ├── __init__.py
    ├── subModule1
    │   ├── file1.py
    │   ├── file2.py
    │   └── __init__.py
    └── subModule2
        ├── file1.py
        ├── file2.py
        └── __init__.py

一种解决方案可以是:
Module/__init__.py

from . import subModule1 as sm1
from . import subModule2 as sm2

Module/subModule1/__init__.py

from .file1 import foo
from .file2 import bar

Module/subModule2/__init__.py

from .file1 import faa
from .file2 import baz

Module/subModule2/file1.py

def faa():
    return "faa"

main.py

import Module as m

print(m.sm2.faa())

输出:

faa

相关问题