Python 导入模块数未知的子包

Python 导入模块数未知的子包,python,import,Python,Import,我正在构建一个包,它是API的包装器。我希望这个包装器能够尽可能地适应这个API的未来版本。出于这些原因,我有一个通用的wrapper.py,它定义了一个通用的包装类,并让用户选择他们想要使用的API版本 API方法在每个API版本的versions子目录中的不同文件中定义。理论上有无限多个版本——我希望这是未来的证明 . └── MyApiWrapper    ├── __init__.py    ├── versions    │   ├── __init__.py    │   ├

我正在构建一个包,它是API的包装器。我希望这个包装器能够尽可能地适应这个API的未来版本。出于这些原因,我有一个通用的
wrapper.py
,它定义了一个通用的包装类,并让用户选择他们想要使用的API版本

API方法在每个API版本的
versions
子目录中的不同文件中定义。理论上有无限多个版本——我希望这是未来的证明

.
└── MyApiWrapper
    ├── __init__.py
    ├── versions
    │   ├── __init__.py
    │   ├── v1.py
    │   ├── v2.py
    │   ├── v3.py
    │   └── ...
    └── wrapper.py
\uuuu init\uuuu.py
的内容都是空的。每个API版本
v1.py
v2.py
vN.py
定义一个
Api

我的问题是在
wrapper.py
中导入不同版本的API。因为我无法单独指定每个文件名,所以我希望导入
版本
,然后从那里开始工作

最终目标是,我应该能够通过将相应的模块添加到
versions
来添加新的API版本,而无需对
wrapper.py
进行任何更改

我尝试了以下不同版本的
wrapper.py
。请注意,这样做的目的是避免手动指定
v1
v2
等。但是,我在这里获取
versions.v1
的值,作为导入的快速测试

导入MyApiWrapper >>>打印(MyApiWrapper.versions.v1.Api) AttributeError:模块“MyApiWrapper”没有属性“versions” 来自MyApiWrapper导入版本的
>>
>>>打印(versions.v1.Api)
AttributeError:模块“MyApiWrapper.versions”没有属性“v1”
导入MyApiWrapper.versions >>>打印(MyApiWrapper.versions.v1.Api) AttributeError:模块“MyApiWrapper.versions”没有属性“v1” 导入MyApiWrapper >>>从MyApiWrapper.versions导入* >>>打印(MyApiWrapper.versions.v1.Api) AttributeError:模块“MyApiWrapper.versions”没有属性“v1” 很明显,以下方法是可行的,但这不是未来的证明:

导入MyApiWrapper >>>从MyApiWrapper.versions导入v1 >>>打印(MyApiWrapper.versions.v1.Api) 这也可以,但并不理想,因为我必须一个接一个地生成模块名:

导入导入库 >>>导入MyApiWrapper >>>importlib.import_模块('.v1',MyApiWrapper.versions') >>>打印(MyApiWrapper.versions.v1.Api) 如何从
版本
子包导入所有模块而不指定其名称