这个 Python 文件夹结构有什么问题?
What's wrong with this Python folder structure?
我以为我理解Python 3 的模块模型,但也许不是。
我有这样一棵树:
root
\-- pmlr
\-- __init__.py * empty
\-- pmlr.py * full of definitions
当我在root
,而我运行从Python3shellimport pmlr
,pmlr
只有这些属性(默认包__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 *
.
我以为我理解Python 3 的模块模型,但也许不是。
我有这样一棵树:
root
\-- pmlr
\-- __init__.py * empty
\-- pmlr.py * full of definitions
当我在root
,而我运行从Python3shellimport pmlr
,pmlr
只有这些属性(默认包__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
usefrom pmlr import *
.