Spaces:
Sleeping
Sleeping
File size: 3,493 Bytes
34b005c b97a3a5 0f43f8a dcda24d b97a3a5 dcda24d b97a3a5 0f43f8a b97a3a5 dcda24d b97a3a5 dcda24d b97a3a5 0f43f8a dcda24d b97a3a5 0f43f8a 164b498 29e24d4 0f43f8a ca2a129 0f43f8a b97a3a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
import shutil
import gradio as gr
#from mysite.libs.utilities import chat_with_interpreter, completion, process_file
#from interpreter import interpreter
#import mysite.interpreter.interpreter_config # インポートするだけで設定が適用されます
import importlib
import os
import pkgutil
#from babyagi.babyagi import gradio_babyagi
#from routers.gra_02_openInterpreter.OpenInterpreter import gradio_interface
#from llamafactory.webui.interface import create_ui
import importlib
import os
import pkgutil
import importlib
import os
import pkgutil
import traceback
def include_gradio_interfaces():
package_dir = "/home/user/app/controllers" # `controllers/` 直下を探索
gradio_interfaces = {} # 辞書型: { interface_name: gradio_interface }
# `controllers/` 以下の全てのサブディレクトリを探索
package_paths = []
for root, dirs, files in os.walk(package_dir):
if "__pycache__" in root: # `__pycache__` を除外
continue
package_paths.append(root)
for package_path in package_paths:
# パッケージの Python モジュールを取得
rel_path = os.path.relpath(package_path, package_dir)
package_name = "controllers" + (("." + rel_path.replace(os.sep, ".")) if rel_path != "." else "")
for module_info in pkgutil.iter_modules([package_path]):
sub_module_name = f"{package_name}.{module_info.name}"
print(f"Trying to import {sub_module_name}")
try:
module = importlib.import_module(sub_module_name)
print(f"Successfully imported {sub_module_name}")
# `gradio_interface` を持つモジュールのみ追加
if hasattr(module, "gradio_interface"):
print(f"Found gradio_interface in {sub_module_name}")
# 名前の一意性を保証する処理
base_name = module_info.name
unique_name = base_name
count = 1
# 重複がある場合は `_1`, `_2`, ... を付与
while unique_name in gradio_interfaces:
unique_name = f"{base_name}_{count}"
count += 1
gradio_interfaces[unique_name] = module.gradio_interface
except ModuleNotFoundError as e:
print(f"ModuleNotFoundError: {sub_module_name} - {e}")
except AttributeError as e:
print(f"AttributeError in {sub_module_name}: {e}")
except Exception as e:
print(f"Failed to import {sub_module_name}: {e}")
print(traceback.format_exc())
# 名前とインターフェースのリストを返す
print(f"Collected Gradio Interfaces: {list(gradio_interfaces.keys())}")
return list(gradio_interfaces.values()), list(gradio_interfaces.keys())
def setup_gradio_interfaces():
##
#from routers.gra_06_video.video import gradio_interface as video
default_interfaces = []#,demo]
default_names = ["CreateTASK","Chat","OpenInterpreter","DataBase","CreateFromDOC","HTML","FILES"]#"demo"]
gradio_interfaces, gradio_names = include_gradio_interfaces()
all_interfaces = gradio_interfaces
all_names = gradio_names
tabs = gr.TabbedInterface(all_interfaces, all_names)
tabs.queue()
return tabs
if __name__ == "__main__":
interfaces, names = include_gradio_interfaces() |