我有一个问题,我遇到过各种各样的包裹。我作为一个整体导入包并尝试访问模块,但显然不存在。但是,一旦我明确地单独导入它,它就可以在我原来导入的命名空间中恢复。这里发生了什么?
以下示例:
public ActionResult XXXX(List<GroupVM> model)
答案 0 :(得分:1)
来自my wikipage,我过去曾写过这篇文章:
导入包并不意味着导入了子包/子模块(尽管有时可能看起来像这样!)
请考虑以下事项:
$ tree
.
└── pkg
├── __init__.py
├── mod2.py
└── mod.py
1 directory, 3 files
$ tail -n 999 pkg/*
==> pkg/__init__.py <==
==> pkg/mod2.py <==
import pkg.mod
x = 2
==> pkg/mod.py <==
hi = 1
>>> import pkg
# Doesn't work!
>>> pkg.mod
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'mod'
# But if we import some module that has a side-effect of importing that module
>>> import pkg.mod2
# Suddenly it works!
# DON'T EVER DEPEND ON THIS BEHAVIOUR!
>>> pkg.mod
<module 'pkg.mod' from 'pkg/mod.py'>
简而言之,有时可能会导致导入包导入其子包,但仅当该包的__init__.py
导入它时。通常,不要依赖于此行为,并明确指出导入子包。