【发布时间】:2016-08-11 18:46:37
【问题描述】:
我的包结构如下:
.
└── package
├── __init__.py
├── sub_package_1
│ ├── __init__.py
│ └── main_module.py
├── sub_package_2
│ ├── __init__.py
│ └── some_module.py
└── sub_package_3
├── __init__.py
└── some_module.py
在package/sub_package_1/main_module.py 中,我想同时使用package/sub_package_2/some_module.py 和package/sub_package_3/some_module.py。为此,我想使用intra-package reference。我知道我可以使用from ..sub_package_1 import some-module,但由于名称相似,我想使用点分语法,例如sub_package_1.some_module。
使用from .. import sub_package_2 我显然无法访问sub_package_2.some_module,因为sub_package_2 是一个包。但是我发现使用
from .. import sub_package_2
from ..sub_package_2 import some_module
我可以访问sub_package_2.some_module。显然,第二次导入将some_module 添加到sub_package_2(检查dir(sub_package_2))。
我的问题是:
- 有没有办法使用一个导入来代替上面的两个?
- 为什么(通常)
import package后跟from package import module将module添加到package? Python 究竟在这里做什么?
【问题讨论】: