mirror of
https://github.com/modelscope/FunASR
synced 2025-09-15 14:48:36 +08:00
62 lines
1.7 KiB
Python
62 lines
1.7 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):
|
||
|
||
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
|