2012-08-08 193 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