diff --git a/zhenxun/builtin_plugins/plugin_store/data_source.py b/zhenxun/builtin_plugins/plugin_store/data_source.py index 6633d404..b2dc96dc 100644 --- a/zhenxun/builtin_plugins/plugin_store/data_source.py +++ b/zhenxun/builtin_plugins/plugin_store/data_source.py @@ -23,12 +23,6 @@ from .config import ( LOG_COMMAND, ) -BAT_FILE = Path() / "win启动.bat" - -WIN_COMMAND = ["./Python310/python.exe", "-m", "pip", "install", "-r"] - -DEFAULT_COMMAND = ["poetry", "run", "pip", "install", "-r"] - def row_style(column: str, text: str) -> RowStyle: """被动技能文本风格 @@ -438,8 +432,8 @@ class StoreManager: continue if cls.check_version_is_new(plugin_info, suc_plugin): logger.debug( - f"插件 {plugin_info.name}({plugin_info.module}) 已是最新版本" - ",跳过", + f"插件 {plugin_info.name}({plugin_info.module}) " + "已是最新版本,跳过", LOG_COMMAND, ) continue @@ -486,6 +480,18 @@ class StoreManager: @classmethod async def _resolve_plugin_key(cls, plugin_id: str) -> str: + """获取插件module + + 参数: + plugin_id: module,id或插件名称 + + 异常: + ValueError: 插件不存在 + ValueError: 插件不存在 + + 返回: + str: 插件模块名 + """ plugin_list: list[StorePluginInfo] = await cls.get_data() if is_number(plugin_id): idx = int(plugin_id) @@ -493,6 +499,9 @@ class StoreManager: raise ValueError("插件ID不存在...") return plugin_list[idx].module elif isinstance(plugin_id, str): - if plugin_id not in [v.module for v in plugin_list]: - raise ValueError("插件Module不存在...") - return plugin_id + result = ( + None if plugin_id not in [v.module for v in plugin_list] else plugin_id + ) or next(v for v in plugin_list if v.name == plugin_id).module + if not result: + raise ValueError("插件 Module / 名称 不存在...") + return result diff --git a/zhenxun/utils/manager/virtual_env_package_manager.py b/zhenxun/utils/manager/virtual_env_package_manager.py index 5c4b16e5..c4665bd5 100644 --- a/zhenxun/utils/manager/virtual_env_package_manager.py +++ b/zhenxun/utils/manager/virtual_env_package_manager.py @@ -3,12 +3,20 @@ import subprocess from subprocess import CalledProcessError from typing import ClassVar +from zhenxun.configs.config import Config from zhenxun.services.log import logger BAT_FILE = Path() / "win启动.bat" LOG_COMMAND = "VirtualEnvPackageManager" +Config.add_plugin_config( + "virtualenv", + "python_path", + None, + help="虚拟环境python路径,为空时使用系统环境的poetry", +) + class VirtualEnvPackageManager: WIN_COMMAND: ClassVar[list[str]] = [ @@ -21,6 +29,8 @@ class VirtualEnvPackageManager: @classmethod def __get_command(cls) -> list[str]: + if path := Config.get_config("virtualenv", "python_path"): + return [path, "-m", "pip"] return cls.WIN_COMMAND if BAT_FILE.exists() else cls.DEFAULT_COMMAND @classmethod