【发布时间】:2021-07-19 14:30:28
【问题描述】:
所以我有这样的结构:
main_folder
├── main.py
├── folder1
├── function1.py
└── function2.py
└── ...
└── function20.py
我想将文件夹 1 中的所有文件导入到 main.py 中
当我写from folder1 import * 时它不起作用,但是当我专门写from folder1 import function1 时它起作用。考虑到我在folder1 下有许多脚本,我希望将它们全部导入而不输入每个名称。有没有办法做到这一点(比如import *)?
【问题讨论】:
-
from X import *仅将全局名称导入到X。子模块X.Y在导入之前实际上不会添加到X,并且from X import *不会导入子模块。 -
导入所有这些的正确方法是什么? @MisterMiyagi
-
我会说“把它们都写出来”,但问题似乎排除了这一点。
-
您可以在
__init__.py中的folder1中包含一个__all__ = ['function1', 'function2', ..., 'function20'],但您仍然必须至少“将它们全部写出来”一次。 -
您可以做一些非常骇人听闻的事情,例如遍历
__init__.py中的子目录,将符合子模块标准的所有内容附加到__all__,但我不推荐这样做。跨度>
标签: python python-3.x