优化虚拟环境管理,插件管理支持名称添加 (#1932)

This commit is contained in:
HibiKier 2025-06-23 19:29:03 +08:00 committed by GitHub
parent d0f296bc9c
commit b537ec15b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 30 additions and 11 deletions

View File

@ -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: moduleid或插件名称
异常:
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

View File

@ -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