新增插件Python依赖管理系统,支持自动检查和安装依赖,优化依赖配置和错误处理,更新相关文档和示例代码。

This commit is contained in:
minecraft1024a
2025-08-13 12:32:07 +08:00
parent d6be518a77
commit 97351ce1ae
10 changed files with 730 additions and 36 deletions

View File

@@ -0,0 +1,102 @@
from typing import Optional
from src.common.logger import get_logger
logger = get_logger("dependency_config")
class DependencyConfig:
"""依赖管理配置类 - 现在使用全局配置"""
def __init__(self, global_config=None):
self._global_config = global_config
def _get_config(self):
"""获取全局配置对象"""
if self._global_config is not None:
return self._global_config
# 延迟导入以避免循环依赖
try:
from src.config.config import global_config
return global_config
except ImportError:
logger.warning("无法导入全局配置,使用默认设置")
return None
@property
def auto_install(self) -> bool:
"""是否启用自动安装"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.auto_install
return True
@property
def use_proxy(self) -> bool:
"""是否使用代理"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.use_proxy
return False
@property
def proxy_url(self) -> str:
"""代理URL"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.proxy_url
return ""
@property
def install_timeout(self) -> int:
"""安装超时时间(秒)"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.auto_install_timeout
return 300
@property
def pip_options(self) -> list:
"""pip安装选项"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.pip_options
return [
"--no-warn-script-location",
"--disable-pip-version-check"
]
@property
def allowed_auto_install(self) -> bool:
"""是否允许自动安装"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.allowed_auto_install
return True
@property
def prompt_before_install(self) -> bool:
"""安装前是否提示用户"""
config = self._get_config()
if config and hasattr(config, 'dependency_management'):
return config.dependency_management.prompt_before_install
return False
# 全局配置实例
_global_dependency_config: Optional[DependencyConfig] = None
def get_dependency_config() -> DependencyConfig:
"""获取全局依赖配置实例"""
global _global_dependency_config
if _global_dependency_config is None:
_global_dependency_config = DependencyConfig()
return _global_dependency_config
def configure_dependency_settings(**kwargs) -> None:
"""配置依赖管理设置 - 注意这个函数现在仅用于兼容性实际配置需要修改bot_config.toml"""
logger.info("依赖管理设置现在通过 bot_config.toml 的 [dependency_management] 节进行配置")
logger.info(f"请求的配置更改: {kwargs}")
logger.warning("configure_dependency_settings 函数仅用于兼容性,配置更改不会持久化")