Py学习  »  Python

python-动态加载自定义模块

stolik • 4 年前 • 587 次点击  

我有一个简单的应用程序在python到visual fx(pygame)。 我想在这个应用程序中加载我的自定义模块。每个模块都有自定义的vfx。

应用程序结构:

app:
|
-main.py
-config.py
-modules
  |
  -01
    |
    -module.py
    -assets
  -02
    |
    -module.py
    -assets
  -XX
    |
    -module.py
    -assets

在module.py中,我有:

    #import libs

def loadModules():
    dir = []
    list = os.listdir("modules")
    for d in list:
        path = os.path.abspath("modules") + os.sep + d
        if os.path.isdir(path) and os.path.exists(path + os.sep + "module.py"):
            dir.append(path + os.sep + "module.py")
    return dir
#init pygame & create scene
i = 0
while true
    #scene()
    sys.path.append(loadModules()[0])
    mod = importlib.import_module("module", __name__)
    mod.draw(scene)
    #print(plugin)
    sys.path.remove(plugin)

    if(i > 10):
         sys.path.append(loadPlugins()[1])
         mod = importlib.import_module("module", __name__)
         mod.draw(scene)
         #print(plugin)
         sys.path.remove(plugin)

    i += 1

modules中的每个module.py都有方法

()

创造视觉化

如何加载动态少模块巫师标准同名方法? 在这个解决方案中,只加载第一个模块,不加载下一个模块,在下一个目录02中。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46204
 
587 次点击  
文章 [ 2 ]  |  最新文章 4 年前
stolik
Reply   •   1 楼
stolik    5 年前

好的,但现在只加载一个模块,而不是全部。 我做错什么了? Check this -> screen

编辑:

我发现了一个贬低的解决方案:

for dir in loadModules():
    print(dir)
    imp.load_source('module', dir)
    import module
    module.draw()
match
Reply   •   2 楼
match    5 年前

loadModules()[0] 将始终返回 dir 永远都是 01 .

而不是做 while True 相反,循环遍历 loadModules() :

for dir in loadModules():
    sys.path.append(dir)
    mod = importlib.import_module("module", __name__)
    mod.draw(scene)
    sys.path.remove(dir)