gpt4 book ai didi

python - 从自定义包中导入大量模块

转载 作者:太空狗 更新时间:2023-10-30 02:05:32 24 4
gpt4 key购买 nike

假设我有这个结构。

MyApp
├── main.py
└── package
├── __init__.py
├── a.py
├── b.py
├── c.py
├── d.py
├── e.py
├── f.py
├── g.py
├── h.py
├── ...
└── z.py

main.py 中,我需要使用所有模块,从 a.pyz.py

我想知道如何使用一条导入语句导入所有这些模块。

所以不要做

from package import a
from package import b
...
from package import z

我可以只导入包并准备好所有模块。

我尝试过的事情

import package
a = package.a.A()
# AttributeError: 'module' object has no attribute 'a'

现在我知道我可以在 __init__.py 中添加代码以将所有模块添加到 __all__,但是根据我的阅读,我们应该避免“from包导入 *'

这样做的原因是包中的模块数量可能会增加,我想在每次创建模块时向主代码添加一条 import 语句。理想情况下,我希望能够将模块放入包中并准备好使用。

最佳答案

__init__.py 中,您可以:

import a, b, c, d...

然后在您执行import package 之后,模块将被放置在package 命名空间中。

如果你真的想在 main.py 的命名空间中命名 ab 等,并且毫不费力地发生这种情况,你真的无法避免 从包导入*;任何其他隐式导入它们的方法都将同样糟糕,因为它涉及使用您未显式导入的名称污染命名空间。

关于python - 从自定义包中导入大量模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com