这个 Python 文件夹结构有什么问题?

What's wrong with this Python folder structure?

我以为我理解Python 3 的模块模型,但也许不是。

我有这样一棵树:

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

当我在root,而我运行从Python3shellimport 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 然后 导入它,将显示该模块的所有属性。如果我从 root import pmlr.pmlr 显示模块的所有属性。

如何使我的模块可以从根目录作为其文件夹 (pmlr) 而不是 pmlr.pmlr 导入?我认为 __init__.py 是实现这一目标的原因。

Rogalski在评论中解释:

In __init__.py use from pmlr import *.