| New file |
| | |
| | | import importlib.util |
| | | |
| | | import importlib.util |
| | | import inspect |
| | | import os.path |
| | | import sys |
| | | |
| | | |
| | | def load_module_from_path(file_path): |
| | | """ |
| | | 从给定的文件路径动态加载模块。 |
| | | |
| | | :param file_path: 模块文件的绝对路径。 |
| | | :return: 加载的模块 |
| | | """ |
| | | module_name = file_path.split("/")[-1].replace(".py", "") |
| | | spec = importlib.util.spec_from_file_location(module_name, file_path) |
| | | module = importlib.util.module_from_spec(spec) |
| | | spec.loader.exec_module(module) |
| | | return module |
| | | |
| | | |
| | | def import_module_from_path(file_path: str): |
| | | |
| | | if file_path.startswith("http"): |
| | | from funasr.download.file import download_from_url |
| | | |
| | | file_path = download_from_url(file_path) |
| | | |
| | | file_dir = os.path.dirname(file_path) |
| | | # file_name = os.path.basename(file_path) |
| | | module_name = file_path.split("/")[-1].replace(".py", "") |
| | | if len(file_dir) < 1: |
| | | file_dir = "./" |
| | | sys.path.append(file_dir) |
| | | try: |
| | | importlib.import_module(module_name) |
| | | print(f"Loading remote code successfully: {file_path}") |
| | | except Exception as e: |
| | | print(f"Loading remote code failed: {file_path}, {e}") |
| | | |
| | | |
| | | # |
| | | # def load_module_from_path(module_name, file_path): |
| | | # """ |
| | | # 从给定的文件路径动态加载模块。 |
| | | # |
| | | # :param module_name: 动态加载的模块的名称。 |
| | | # :param file_path: 模块文件的绝对路径。 |
| | | # :return: 加载的模块 |
| | | # """ |
| | | # # 创建加载模块的spec(规格) |
| | | # spec = importlib.util.spec_from_file_location(module_name, file_path) |
| | | # |
| | | # # 根据spec创建模块 |
| | | # module = importlib.util.module_from_spec(spec) |
| | | # |
| | | # # 执行模块的代码来实际加载它 |
| | | # spec.loader.exec_module(module) |
| | | # |
| | | # return module |