FunASR/funasr/utils/dynamic_import.py
2024-07-01 11:08:32 +08:00

62 lines
1.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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