在一个包中,我对每个模块目录的__init__.py
进行一些检查,看看环境是否正常,然后对嵌套模块使用from . import mod1
(这里是mod1
)。每个模块目录依次包含一个__init__.py
(显然),它将导入下一个较低级别(如果有的话)。在
某些__init__.py
包含__all__
数组,仅在import
上公开某些名称。在
假设我有以下“main”脚本(spam.py
):
import os, sys
if (sys.version_info[0] != 2) or (sys.version_info < (2,7)):
sys.exit("...")
else:
import pkgname
def main():
pass
if __name__ == '__main__':
main()
以及以下pkgname/__init__.py
:
以及以下pkgname/db/__init__.py
:
import sys
if __name__ == '__main__':
sys.exit(0)
else:
import sqlite3
# ...
foobar = { 'spam' : 'egg' }
__all__ = ["foobar"]
不管pkgname/__init__.py
中的__all__
数组,符号^{__all__
数组是否只影响直接模块或任何较低的级别?在
在这里,哪些规则控制Python的行为?我试着找了几次,结果空手而归。可能我使用了错误的搜索(__all__
,python
,relative import
)?在
__all__
在您描述的案例中没有效果。它只影响你做from package import *
时发生的事情。请参见the documentation以及previousquestions(这是我在google上找到的)。在相关问题 更多 >
编程相关推荐