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
|