Python: import every module from a folder?
告诉python从某个文件夹导入所有模块的最好方法(read:cleanest)是什么?
我想允许人们将他们的"mods"(模块)放在我的应用程序的文件夹中,我的代码应该在每次启动时检查并导入放在那里的任何模块。
我也不想在导入的内容中添加额外的作用域(不是"myfolder.mymodule.something",而是"something")。
如果在模块中转换文件夹本身,通过使用
1 2 3 4 5 6 7 | import os for name in os.listdir("plugins"): if name.endswith(".py"): #strip the extension module = name[:-3] # set the module name in the current global name space: globals()[module] = __import__(os.path.join("plugins", name) |
这种方法的好处是:它允许您动态地将模块名传递给
创建名为的文件
1 | __init__.py |
在文件夹中导入文件夹名,如下所示:
1 2 | >>> from <folder_name> import * #Try to avoid importing everything when you can >>> from <folder_name> import module1,module2,module3 #And so on |
号
你可能想试试这个项目:https://gitlab.com/aurelien-lourot/importdir
使用这个模块,您只需要写两行就可以从目录中导入所有插件,而不需要额外的
1 2 | import importdir importdir.do("plugins/", globals()) |
。