我正在尝试使用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,但是它不起作用
答案 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 *
方法从该文件夹导入所有模块,而没有以上脚本是不可能的(您已经每次导入每个文件)