2016-02-23 68 views
1

我以爲我理解Python 3的模塊模型,但也許不是。這個Python文件夾結構有什麼問題?

我有一棵樹,如:

root 
\-- pmlr 
    \-- __init__.py * empty 
    \-- pmlr.py  * full of definitions 

當我在root,我從Python3運行shell import pmlrpmlr只有這些屬性(默認包__dict__):

pmlr.__cached__   pmlr.__dir__(   pmlr.__format__(  pmlr.__hash__(   pmlr.__lt__(   pmlr.__package__  pmlr.__repr__(   pmlr.__str__(
pmlr.__class__(  pmlr.__doc__   pmlr.__ge__(   pmlr.__init__(   pmlr.__name__   pmlr.__path__   pmlr.__setattr__(  pmlr.__subclasshook__(
pmlr.__delattr__(  pmlr.__eq__(   pmlr.__getattribute__( pmlr.__le__(   pmlr.__ne__(   pmlr.__reduce__(  pmlr.__sizeof__(  
pmlr.__dict__   pmlr.__file__   pmlr.__gt__(   pmlr.__loader__   pmlr.__new__(   pmlr.__reduce_ex__( pmlr.__spec__   

這意味着python認爲pmlr是一個,但它找不到它的任何屬性。

如果我cd pmlr然後導入它,所有模塊的屬性都會顯示出來。如果我從rootimport pmlr.pmlr,顯示模塊的所有屬性。

如何使我的模塊可以從根目錄作爲其文件夾(pmlr)而不是pmlr.pmlr?我認爲__init__.py是完成了這一點。

+1

在'__init __。py'中使用'from .pmlr import *'。 –

+0

@Rogalski回覆,謝謝 - 我沒有想到要這麼做 – cat

回答

0

Rogalski在評論中解釋過:

__init__.py使用from pmlr import *