无论如何我可以将模块导入包级别吗?
例如,请考虑以下包:- conf
- __init__.py
- general.py
现在我有了另一个包裹:
- conf2
- __init__.py
我希望能够使用import conf2.general
。这意味着,以某种方式将general.py模块导入conf2包。
我已将以下导入添加到conf2/__init__.py
:
来自conf import general
现在,我可以使用from conf2 import general
,它运行正常。但是,我想要实现的是import conf2.general
。这可能吗?
答案 0 :(得分:1)
conf2/__init__.py
的内容:
from conf import general
来演示编辑中的额外信息,还包括:
import conf.general
演示:
$ find .
.
./conf
./conf/__init__.py
./conf/general.py
./conf2
./conf2/__init__.py
$ python
Python 2.6.1 (r261:67515, Aug 2 2010, 20:10:18)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import conf2
>>> conf2.general
<module 'conf.general' from 'conf/general.pyc'>
再次回答编辑:
>>> conf2.conf.general
<module 'conf.general' from 'conf/general.pyc'>
答案 1 :(得分:0)
也许,你可以运气一下conf2的变形__path__变量(在conf2 / __ init__.py中)。这里是我使用PIL.Image而不是conf.general的例子:
# from PIL import Image
import PIL
__path__.insert(0, PIL.__path__[0])
尽管如此,整个想法对我来说似乎很奇怪,并且闻起来像糟糕的架构解决方案,除非你做一些不寻常的事情。 PIL的所有模块现在都在conf2中,而不仅仅是Image ...