2012-08-08 87 views
3

我想从包中设置一个模块,按照从Modules Python Tutorial的指令进行设置。我的目录树:从包中导入模块

$ pwd 
/home/me/lib/python/pygplib 

$ ls * 
__init__.py 

atcf: 
atcf.py __init__.py 

我能够导入pygplibpygplib.atcf似乎并不存在:

In [1]: import pygplib 

In [2]: dir(pygplib) 
Out[2]: ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__'] 

我在做什么错?我所有的__init__.py文件都是空白的。谢谢。

+0

您是否尝试过使用'import pygplib.atcf.atcf'来获取该文件中的内容? – mVChr 2012-08-08 18:21:15

回答

3

atcf不会自动导入到pygplib命名空间,但你可以安排这通过将

import atcf 

pygplib/__init__.py发生。

+0

谢谢,这正是我所需要的,因为我想在包导入的命名空间中提供子模块。 – milancurcic 2012-08-08 18:26:48

+1

还要注意,如果你想让atcf.py中的东西位于'pygplib.atcf'命名空间中,你需要'将atcf import *'放在'pyglib/atcf/__ init __。py'中。 – unutbu 2012-08-08 18:31:55

3

导入顶层包时子模块不会被导入,因此不会出现在dir中。相反,做

from pygplib import atcf 

或者

from pygplib.atcf import atcf 
+0

是的,就是这样,谢谢。 – milancurcic 2012-08-08 18:26:06