将模块导入包

时间:2012-01-08 13:42:01

标签: python

无论如何我可以将模块导入包级别吗?

例如,请考虑以下包:

- 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。这可能吗?

2 个答案:

答案 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 ...