如何从 Python 命名空间/包中导入所有内容?


从 Python 包中导入所有内容是一个不好的主意,因为包不是超级模块——它是一组模块的集合。因此,您应该只导入该文件中需要的内容。此外,将包中的所有内容导入到全局命名空间会导致名称泛滥,并且很可能导致这些名称之间发生冲突。

话虽如此,仍然有方法可以做到这一点。第一个方法是使用每个子模块的导入语句手动从包中导入所有内容。 另一种方法,正如https://docs.pythonlang.cn/tutorial/modules.html#importing-from-a-package 中的文档所建议的那样,如果您在 __init__.py 文件中有一个名为 __all__ 的字符串列表,则当执行 from pack import * 时,将导入该列表中的所有模块/子包名称。 因此,您需要创建一个包含包中所有内容的字符串列表,然后执行“from packageName import *”以导入此模块中的所有内容,以便在您在其他地方导入它时,所有这些内容也会在此命名空间中导入。

更新于: 2019-07-30

612 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告