Files
2026-07-13 13:25:10 +08:00

67 lines
1.8 KiB
Python

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):
"""Import module from path.
Args:
file_path: TODO.
"""
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