所有的进口规则是什么?

2024-04-29 16:01:14 发布

您现在位置:Python中文网/ 问答频道 /正文

在一个包中,我对每个模块目录的__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

^{pr2}$

以及以下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__pythonrelative import)?在


Tags: 模块pyimport目录ifinitmainversion