从子目录导入所有模块

时间:2018-07-27 14:37:21

标签: python

我正在尝试使用my_modules_folder的__init__.py中的下一个代码从子目录中导入所有模块:

from os.path import dirname, basename, isfile
import glob

def __reply_to_text():
    path = glob.glob(dirname(__file__)+"/*.py")
    mod = [ basename(f)[:-3] for f in path if isfile(f) and not f.endswith('__init__.py')]
    return mod

REPLY_TO_TEXT = __reply_to_text()

__all__ = REPLY_TO_TEXT

但是它不起作用。我正在__main__。py中导入REPLY_TO_TEXT,但是它不起作用

1 个答案:

答案 0 :(得分:0)

所以:

更新的代码为:

from os.path import dirname, basename, isfile
import glob
path = glob.glob(dirname(__file__) + "/*.py")
__all__ = [ basename(f)[:-3] for f in path if isfile(f) and f.endswith(".py") and not f.endswith('__init__.py')]

默认情况下,您无法从带有from my_folder import *的文件夹中导入所有模块,因此上面的代码将使您可以导入带有*的所有模块

所以我们有这个目录:

> app_py
    >__main__.py
    > __init__.py
    >folder
        __init__.py
        example.py

在文件夹/init.py中添加上述脚本,将允许您使用from app_py.folder import *方法从该文件夹导入所有模块,而没有以上脚本是不可能的(您已经每次导入每个文件)