在Python中,如何在没有名称空间覆盖的情况下自动导入所有嵌套包?

时间:2016-10-24 15:07:00

标签: python python-import

我有一个2层包:

package1
|--package2
|  |--function1
|  |--function2
|--package3

我正在尝试尽可能避免名称/导入冲突,因此我导入包中的所有成员而不更改其名称空间,然后按名称使用这些函数:

import package1 as package1

package1.package2.function1(...)

然而,翻译给了我以下错误:

  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'package2'

这似乎是不合逻辑的,因为package2肯定在package1的命名空间中,我已经导入了它。如果我想继续使用我的函数调用格式,我应该使用哪种导入而不引用package2和package3?

我也尝试了以下内容:

import package1.*               (doesn't work)
from package1 import * as package1.* (obviously doesn't work)
from package1 import *          (works but bad practice, causes naming conflict)

但是他们没有满足我的需要。

0 个答案:

没有答案