2016-02-23 89 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 *