【发布时间】:2020-01-06 10:06:48
【问题描述】:
考虑 Python 3.6 中的以下情况:
basepackage
|---__init__.py
|---package
|---__init__.py
|---subpackage
|---__init__.py
|---module.py
重要细节:在basepackage.package.__init__.py里面有:
from basepackage.package.subpackage.module import AClass as AliasedClass
现在,假设在 basepackage.package.subpackage.module.py 内部我们要使用:
import basepackage.package.subpackage.module as aliased_module [1]
结果是:
AttributeError: module 'basepackage' has no attribute 'package'
在罪魁祸首语句之后列出堆栈跟踪(按以下顺序):
from basepackage.package.subpackage.module import AClass as AliasedClass
import basepackage.package.subpackage.module as aliased_module
但如果不是 [1] 想使用:
from basepackage.package.subpackage import module as aliased_module [2]
然后一切正常。
[1] 与 [2] 有何不同,以至于前者会导致错误,而后者不会?
【问题讨论】:
标签: python import package python-import python-module